@* * Copyright 2021 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import uk.gov.hmrc.ddcopsusermanagmentfrontendpocscala.domain.User @import uk.gov.hmrc.ddcopsusermanagmentfrontendpocscala.views.html.Layout @import uk.gov.hmrc.govukfrontend.views.html.components.{Button, GovukButton, GovukInput, GovukTable, HeadCell, Table, TableRow, Text} @import views.html.helper.CSPNonce @this(layout: Layout, govukInput: GovukInput, govukButton: GovukButton, govukTable: GovukTable) @(users: List[User], query: String)(implicit request: Request[_], messages: Messages) @layout(pageTitle = Some("ddcops-user-managment-frontend-poc-scala")) {
@if(query.trim.nonEmpty) { @govukTable(Table( rows = users.map(user => { Seq( TableRow( content = Text(user.username) ), TableRow( content = Text(user.email) ) ) }), head = Some(Seq( HeadCell( content = Text("Username") ), HeadCell( content = Text("Email") ) )), firstCellIsHeader = false )) } }


July 2021
I recently moved into a new apartment, and I started using Pinterest more and more for fresh ideas on how I could decorate the interior of my new place. As I browsed from Pin to Pin, my mind started wondering how an image recommender like Pinterest would work. How could I build an image recommender system? Of course, I wouldn't have access to the complex tools and technologies used at Pinterest, but I could definitely experiment with tools I am already familiar with, such as Keras and Scikit-Learn to understand the underpinnings of a basic image recommender system.
The goals of this little project were simple. I wanted to understand how an image recommender would work, end-to-end. I wanted to know how a dataset of raw images as JPGs or PNGs could be used by some sort of image classification model to find other similar images in the dataset. Through some of my previous projects, I knew that cosine similarity (or any similar distance metric) needed to be used as the meat of the recommender algorithm to find close/related datapoints. All that was left to do was figure out how to build a Keras model to recognize images.
I knew I had to start by building a good image classification model in order to compare images for similarities. However, the deeper I dove into image model architectures, I began to realize that Keras has numerous pre-trained machine learning models, all of which would already perform much better than anything I could cook up on my own. Therefore, I decided to leverage these models instead and play around to see how these models perform on a given set of JPG images.
The main models I experimented with are the Keras VGG16, VGG19, and the InceptionV3, among others. The dataset I wanted to use was a set of raw JPG images, and since I wanted to make a mock-Pinterest, I decided on a clothing dataset that can be found here on Kaggle.
With this project, as well as other machine learning/data analytics projects I've worked on, I've revisited the point of how critical it is to properly pre-process the data you are given. In this case, each image in the dataset needed to first be loaded using the Python Image Library and resized to match the input size and dimensions of the model that was going to be used. So in the case of the VGG16 model, each image needed to be resized to (224, 224, 3) size, corresponding to (width, height, color_channel) as it was loaded in. Each image then needed to be converted to a Numpy array to be fed into our model. But each model has an input size of (batch_size, height, width, channel), and so an extra dimension was added using np.expand_dims() to coerce our image array to the necessary input size for the.
Aside from pre-processing the JPG images, I also needed to pre-process the model itself, which was something I hadn't done before. Since the pre-trained Keras models are set up for image classification, the final layer in each of the models was a prediction layer that output an image object prediction. The image recommender needed to instead calculate similarity on image features, not the label itself, and so I needed to remove the last layer of the model before feeding data through.
After all of the images were pre-processed as Numpy arrays of the proper size of (None, 224, 224, 3), and the Keras model dropped the prediction layer, all that was left to do was to feed the stack of image matrices to the model.predict() function and harvest the model outputs.
This is where the cosine similarity came in. A cosine similarity matrix needed to be constructed, comparing each model output for each image with every other image's model output. Then, all that was left to do was use this cosine similarity matrix as a lookup table, and given an image from the user, we could look up the image in our look-up matrix, find the maximum cosine similarity score, and then return that image, or rather a list of similar images as the "related images".
Now we can see some cool things happening! Let's say we use the Keras InceptionV3 model, we can see it performing really well to give us quite accurate recommendations for similar images, which in this case is shoes.
If you would like to see the full working code, please visit my Github repo here. Special thanks to Alexandre Wrg for his intuitive tutorial on building and understanding this recommender, please visit his Medium page and give him a like!
1. Alexandre Wrg. Oct 2, 2019. Image recommender engine -- leveraging transfer learnign. Accessed from: https://towardsdatascience.com/image-recommendation-engine-leverage-transfert-learning-ec9af32f5239.
2. Param Aggarwal. 2019. Fashion Product Images (small). Accessed from: https://www.kaggle.com/paramaggarwal/fashion-product-images-small.
3. Python Image Library. 2021. Accessed from: https://pillow.readthedocs.io/en/stable/handbook/tutorial.html#using-the-image-class.
4. Rohit Thakur. Aug 6, 2019. Step by step VGG16 implementation in Keras for beginners. Accessed from: https://towardsdatascience.com/step-by-step-vgg16-implementation-in-keras-for-beginners-a833c686ae6c.


pg_isbusy
Name
pg_isbusy -- see if a query is busy
Description
pg_isbusy
checks to see if the backend is busy handling a query or not.
Arguments
conn
-
The handle of a connection to the database in which the large object exists.
Return Value
Returns 1 if the backend is busy, in which case a call to pg_getresult
would block, otherwise it returns 0.


Subaru
Subaru is a simple app to make full-width strings from normal text.
It aims to be the easiest and fastest ａｅｓｔｈｅｔｉｃｉｚｅｒ available.
Features
Small size
Internet cepat buat apa? -- Tifatul Sembiring
Clocked in at just 55 KB, Subaru loads fast under the awfully slow Indonesian internet connections. We just want to ａｅｓｔｈｅｔｉｃｉｚｅ texts, so it has to load quickly.
Type straight from address bar
Don't waste time to type the string; insert it right from the address bar.
Try it: https://subaru.tkesgar.com/memes
Clipboard support
If you copied the string, you don't even have to type the string.
- Open https://subaru.tkesgar.com
Ctrl-V
Ctrl-C
- Magic.
Note that this requires compatible browsers; unless you are still using Internet Explorer, you should be fine.
Two textboxes
Finally, if you are being traditional, you can use the two textboxes provided.
Running locally
You need node
and npm
installed on your computer.
- Clone the Github repository at
https://github.com/tkesgar/subaru
. - Navigate to the repository folder.
- Run
npm install --production
to install required dependencies. - Run
npm start
to start the server. By default, it runs on port 8080; change it by declaringPORT
environment variable.
Subaru who?
From Mayo Chiki!. Simply the cutest reverse trap ever.
Contributing
Feel free to submit issues, bugs, and pull requests at GitHub.
License
Licensed under MIT License.


---
layout: post
title: IBM throws its weight behind MongoDB for mobile apps — Tech News and Analysis
date: '2013-06-05T09:18:00.001+01:00'
author: John Smith
tags:
modified_time: '2013-06-05T09:18:13.575+01:00'
blogger_id: tag:blogger.com,1999:blog-31446756.post-6127036368307548090
blogger_orig_url: http://www.solrevdev.com/2013/06/ibm-throws-its-weight-behind-mongodb.html
---
"IBM throws its weight behind MongoDB for mobile apps"
IBM throws its weight behind MongoDB for mobile apps — Tech News and Analysis:
'via Blog this'


Product Designer
Building creative websites for the world's people. Always in search of the great user experience. Building creative websites for the world's people. Always in search of the great user experience.
Product Fiona Hernandez Fiona Hernandez Designer


My name is Iain Peng, and I'm from San Francisco, born and raised. From the mean streets of the Sunset district, I've cultivated my love and passion for games of all kind, into devloping them.
Many games are currently in development. I like to keep a relatively low profile on my works in progress, but I am willing to showcase one of my earlier works now.
I am able to learn, and more importantly I am willing to. I can follow direction, while still retaining my ability to think independently, and crucially when the time calls for it.


Crop Image and Save
The files are read like
Blob
, after that submit are
saved
like Blob inside of the
Collection
.
{{> insertBookForm}}


{% import 'apostrophe-schemas:macros.html' as schemas %} {# choice is the object. relationship contains any relationship properties. #}


This tutorial explores the various features of Zend\EventManager.
Typically, an event will be modeled as an object, containing metadata surrounding when and how it was triggered, including the event name, what object triggered the event (the “target”), and what parameters were provided. Events are named, which allows a single listener to branch logic based on the event.
The minimal things necessary to start using events are:
The simplest example looks something like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | use Zend\EventManager\EventManager;
$events = new EventManager();
$events->attach('do', function ($e) {
$event = $e->getName();
$params = $e->getParams();
printf(
'Handled event "%s", with parameters %s',
$event,
json_encode($params)
);
});
$params = array('foo' => 'bar', 'baz' => 'bat');
$events->trigger('do', null, $params);
|
The above will result in the following:
Handled event "do", with parameters {"foo":"bar","baz":"bat"}
Note
Throughout this tutorial, we use closures as listeners. However, any valid PHP callback can be attached as a listeners: PHP function names, static class methods, object instance methods, functors, or closures. We use closures within this post simply for illustration and simplicity.
If you were paying attention to the example, you will have noted the null argument. Why is it there?
Typically, you will compose an EventManager within a class, to allow triggering actions within methods. The middle argument to trigger() is the “target”, and in the case described, would be the current object instance. This gives event listeners access to the calling object, which can often be useful.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | use Zend\EventManager\EventManager;
use Zend\EventManager\EventManagerAwareInterface;
use Zend\EventManager\EventManagerInterface;
class Example implements EventManagerAwareInterface
{
protected $events;
public function setEventManager(EventManagerInterface $events)
{
$events->setIdentifiers(array(
__CLASS__,
get_class($this)
));
$this->events = $events;
}
public function getEventManager()
{
if (!$this->events) {
$this->setEventManager(new EventManager());
}
return $this->events;
}
public function do($foo, $baz)
{
$params = compact('foo', 'baz');
$this->getEventManager()->trigger(__FUNCTION__, $this, $params);
}
}
$example = new Example();
$example->getEventManager()->attach('do', function($e) {
$event = $e->getName();
$target = get_class($e->getTarget()); // "Example"
$params = $e->getParams();
printf(
'Handled event "%s" on target "%s", with parameters %s',
$event,
$target,
json_encode($params)
);
});
$example->do('bar', 'bat');
|
The above is basically the same as the first example. The main difference is that we’re now using that middle argument in order to pass the target, the instance of Example, on to the listeners. Our listener is now retrieving that ($e->getTarget()), and doing something with it.
If you’re reading this critically, you should have a new question: What is the call to setIdentifiers() for?
So far, with both a normal EventManager instance and with the SharedEventManager instance, we’ve seen the usage of singular strings representing the event and target names to which we want to attach. What if you want to attach a listener to multiple events or targets?
The answer is to supply an array of events or targets, or a wildcard, *.
Consider the following examples:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | // Multiple named events:
$events->attach(
array('foo', 'bar', 'baz'), // events
$listener
);
// All events via wildcard:
$events->attach(
'*', // all events
$listener
);
// Multiple named targets:
$sharedEvents->attach(
array('Foo', 'Bar', 'Baz'), // targets
'doSomething', // named event
$listener
);
// All targets via wildcard
$sharedEvents->attach(
'*', // all targets
'doSomething', // named event
$listener
);
// Mix and match: multiple named events on multiple named targets:
$sharedEvents->attach(
array('Foo', 'Bar', 'Baz'), // targets
array('foo', 'bar', 'baz'), // events
$listener
);
// Mix and match: all events on multiple named targets:
$sharedEvents->attach(
array('Foo', 'Bar', 'Baz'), // targets
'*', // events
$listener
);
// Mix and match: multiple named events on all targets:
$sharedEvents->attach(
'*', // targets
array('foo', 'bar', 'baz'), // events
$listener
);
// Mix and match: all events on all targets:
$sharedEvents->attach(
'*', // targets
'*', // events
$listener
);
|
The ability to specify multiple targets and/or events when attaching can slim down your code immensely.
Another approach to listening to multiple events is via a concept of listener aggregates, represented by Zend\EventManager\ListenerAggregateInterface. Via this approach, a single class can listen to multiple events, attaching one or more instance methods as listeners.
This interface defines two methods, attach(EventManagerInterface $events) and detach(EventManagerInterface $events). Basically, you pass an EventManager instance to one and/or the other, and then it’s up to the implementing class to determine what to do.
As an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | use Zend\EventManager\EventInterface;
use Zend\EventManager\EventManagerInterface;
use Zend\EventManager\ListenerAggregateInterface;
use Zend\Log\Logger;
class LogEvents implements ListenerAggregateInterface
{
protected $listeners = array();
protected $log;
public function __construct(Logger $log)
{
$this->log = $log;
}
public function attach(EventManagerInterface $events)
{
$this->listeners[] = $events->attach('do', array($this, 'log'));
$this->listeners[] = $events->attach('doSomethingElse', array($this, 'log'));
}
public function detach(EventCollection $events)
{
foreach ($this->listeners as $index => $listener) {
if ($events->detach($listener)) {
unset($this->listeners[$index];
}
}
}
public function log(EventInterface $e)
{
$event = $e->getName();
$params = $e->getParams();
$this->log->info(sprintf('%s: %s', $event, json_encode($params)));
}
}
|
You can attach this using either attach() or attachAggregate():
$logListener = new LogEvents($logger);
$events->attachAggregate($logListener); // OR
$events->attach($logListener);
Any events the aggregate attaches to will then be notified when triggered.
Why bother? For a couple of reasons:
Sometimes you’ll want to know what your listeners returned. One thing to remember is that you may have multiple listeners on the same event; the interface for results must be consistent regardless of the number of listeners.
The EventManager implementation by default returns a Zend\EventManager\ResponseCollection instance. This class extends PHP’s SplStack, allowing you to loop through responses in reverse order (since the last one executed is likely the one you’re most interested in). It also implements the following methods:
Typically, you should not worry about the return values from events, as the object triggering the event shouldn’t really have much insight into what listeners are attached. However, sometimes you may want to short-circuit execution if interesting results are obtained.
You may want to short-ciruit execution if a particular result is obtained, or if a listener determines that something is wrong, or that it can return something quicker than the target.
As examples, one rationale for adding an EventManager is as a caching mechanism. You can trigger one event early in the method, returning if a cache is found, and trigger another event late in the method, seeding the cache.
The EventManager component offers two ways to handle this. The first is to pass a callback as the last argument to trigger(); if that callback returns a boolean true, execution is halted.
Here’s an example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public function someExpensiveCall($criteria1, $criteria2)
{
$params = compact('criteria1', 'criteria2');
$results = $this->getEventManager()->trigger(
__FUNCTION__,
$this,
$params,
function ($r) {
return ($r instanceof SomeResultClass);
}
);
if ($results->stopped()) {
return $results->last();
}
// ... do some work ...
}
|
With this paradigm, we know that the likely reason of execution halting is due to the last result meeting the test callback criteria; as such, we simply return that last result.
The other way to halt execution is within a listener, acting on the Event object it receives. In this case, the listener calls stopPropagation(true), and the EventManager will then return without notifying any additional listeners.
1 2 3 4 | $events->attach('do', function ($e) {
$e->stopPropagation();
return new SomeResultClass();
});
|
This, of course, raises some ambiguity when using the trigger paradigm, as you can no longer be certain that the last result meets the criteria it’s searching on. As such, we recommend that you standardize on one approach or the other.
On occasion, you may be concerned about the order in which listeners execute. As an example, you may want to do any logging early, to ensure that if short-circuiting occurs, you’ve logged; or if implementing a cache, you may want to return early if a cache hit is found, and execute late when saving to a cache.
Each of EventManager::attach() and SharedEentManager::attach() accept one additional argument, a priority. By default, if this is omitted, listeners get a priority of 1, and are executed in the order in which they are attached. However, if you provide a priority value, you can influence order of execution.
To borrow an example from earlier:
1 2 3 4 5 6 7 8 9 10 11 12 | $priority = 100;
$events->attach('Example', 'do', function($e) {
$event = $e->getName();
$target = get_class($e->getTarget()); // "Example"
$params = $e->getParams();
printf(
'Handled event "%s" on target "%s", with parameters %s',
$event,
$target,
json_encode($params)
);
}, $priority);
|
This would execute with high priority, meaning it would execute early. If we changed $priority to -100, it would execute with low priority, executing late.
While you can’t necessarily know all the listeners attached, chances are you can make adequate guesses when necessary in order to set appropriate priority values. We advise avoiding setting a priority value unless absolutely necessary.
Hopefully some of you have been wondering, “where and when is the Event object created”? In all of the examples above, it’s created based on the arguments passed to trigger() – the event name, target, and parameters. Sometimes, however, you may want greater control over the object.
As an example, one thing that looks like a code smell is when you have code like this:
1 2 3 4 | $routeMatch = $e->getParam('route-match', false);
if (!$routeMatch) {
// Oh noes! we cannot do our work! whatever shall we do?!?!?!
}
|
The problems with this are several. First, relying on string keys is going to very quickly run into problems – typos when setting or retrieving the argument can lead to hard to debug situations. Second, we now have a documentation issue; how do we document expected arguments? how do we document what we’re shoving into the event? Third, as a side effect, we can’t use IDE or editor hinting support – string keys give these tools nothing to work with.
Similarly, consider how you might represent a computational result of a method when triggering an event. As an example:
1 2 3 4 5 6 7 8 9 | // in the method:
$params['__RESULT'] = $computedResult;
$events->trigger(__FUNCTION__ . '.post', $this, $params);
// in the listener:
$result = $e->getParam('__RESULT__');
if (!$result) {
// Oh noes! we cannot do our work! whatever shall we do?!?!?!
}
|
Sure, that key may be unique, but it suffers from a lot of the same issues.
So, the solution is to create custom events. As an example, we have a custom MvcEvent in the ZF2 MVC layer. This event composes the application instance, the router, the route match object, request and response objects, the view model, and also a result. We end up with code like this in our listeners:
1 2 3 4 5 6 | $response = $e->getResponse();
$result = $e->getResult();
if (is_string($result)) {
$content = $view->render('layout.phtml', array('content' => $result));
$response->setContent($content);
}
|
But how do we use this custom event? Simple: trigger() can accept an event object instead of any of the event name, target, or params arguments.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $event = new CustomEvent();
$event->setSomeKey($value);
// Injected with event name and target:
$events->trigger('foo', $this, $event);
// Injected with event name:
$event->setTarget($this);
$events->trigger('foo', $event);
// Fully encapsulates all necessary properties:
$event->setName('foo');
$event->setTarget($this);
$events->trigger($event);
// Passing a callback following the event object works for
// short-circuiting, too.
$results = $events->trigger('foo', $this, $event, $callback);
|
This is a really powerful technique for domain-specific event systems, and definitely worth experimenting with.
In previous sections, I indicated that short-circuiting is a way to potentially implement a caching solution. Let’s create a full example.
First, let’s define a method that could use caching. You’ll note that in most of the examples, I’ve used __FUNCTION__ as the event name; this is a good practice, as it makes it simple to create a macro for triggering events, as well as helps to keep event names unique (as they’re usually within the context of the triggering class). However, in the case of a caching example, this would lead to identical events being triggered. As such, I recommend postfixing the event name with semantic names: “do.pre”, “do.post”, “do.error”, etc. I’ll use that convention in this example.
Additionally, you’ll notice that the $params I pass to the event is usually the list of parameters passed to the method. This is because those are often not stored in the object, and also to ensure the listeners have the exact same context as the calling method. But it raises an interesting problem in this example: what name do we give the result of the method? One standard that has emerged is the use of __RESULT__, as double-underscored variables are typically reserved for the sytem.
Here’s what the method will look like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public function someExpensiveCall($criteria1, $criteria2)
{
$params = compact('criteria1', 'criteria2');
$results = $this->getEventManager()->trigger(
__FUNCTION__ . '.pre',
$this,
$params,
function ($r) {
return ($r instanceof SomeResultClass);
}
);
if ($results->stopped()) {
return $results->last();
}
// ... do some work ...
$params['__RESULT__'] = $calculatedResult;
$this->events()->trigger(__FUNCTION__ . '.post', $this, $params);
return $calculatedResult;
}
|
Now, to provide some caching listeners. We’ll need to attach to each of the “someExpensiveCall.pre” and “someExpensiveCall.post” methods. In the former case, if a cache hit is detected, we return it, and move on. In the latter, we store the value in the cache.
We’ll assume $cache is defined, and follows the paradigms of Zend\Cache. We’ll want to return early if a hit is detected, and execute late when saving a cache (in case the result is modified by another listener). As such, we’ll set the “someExpensiveCall.pre” listener to execute with priority 100, and the “someExpensiveCall.post” listener to execute with priority -100.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $events->attach('someExpensiveCall.pre', function($e) use ($cache) {
$params = $e->getParams();
$key = md5(json_encode($params));
$hit = $cache->load($key);
return $hit;
}, 100);
$events->attach('someExpensiveCall.post', function($e) use ($cache) {
$params = $e->getParams();
$result = $params['__RESULT__'];
unset($params['__RESULT__']);
$key = md5(json_encode($params));
$cache->save($result, $key);
}, -100);
|
Note
The above could have been done within a ListenerAggregate, which would have allowed keeping the $cache instance as a stateful property, instead of importing it into closures.
Another approach would be to move the body of the method to a listener as well, which would allow using the priority system in order to implement caching. That would look like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public function setEventManager(EventManagerInterface $events)
{
$this->events = $events;
$events->setIdentifiers(array(__CLASS__, get_class($this)));
$events->attach('someExpensiveCall', array($this, 'doSomeExpensiveCall'));
}
public function someExpensiveCall($criteria1, $criteria2)
{
$params = compact('criteria1', 'criteria2');
$results = $this->getEventManager()->trigger(
__FUNCTION__,
$this,
$params,
function ($r) {
return ($r instanceof SomeResultClass);
}
);
return $results->last();
}
public function doSomeExpensiveCall($e)
{
// ... do some work ...
$e->setParam('__RESULT__', $calculatedResult);
return $calculatedResult;
}
|
The listeners would then attach to the “someExpensiveCall” event, with the cache lookup listener listening at high priority, and the cache storage listener listening at low (negative) priority.
Sure, we could probably simply add caching to the object itself - but this approach allows the same handlers to be attached to multiple events, or to attach multiple listeners to the same events (e.g. an argument validator, a logger and a cache manager). The point is that if you design your object with events in mind, you can easily make it more flexible and extensible, without requiring developers to actually extend it – they can simply attach listeners.
The EventManager is a powerful component. It drives the workflow of the MVC layer, and is used in countless components to provide hook points for developers to manipulate the workflow. It can be put to any number of uses inside your own code, and is an important part of your Zend Framework toolbox.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.


Name:
function() { // Remember this context is the one of the extension's popup, not the open tab. // Look here: https://developer.chrome.com/extensions/api_index console.log("Do cool stuff here!"); }


{{selected_breed.name}}
{{selected_breed.description}}
---
{{selected_breed.temperament}}
---
Weight: {{selected_breed.weight.imperial}} lbs
Height: {{selected_breed.height.imperial}} inches
Life Span: {{selected_breed.life_span}} years
Bred For: {{selected_breed.bred_for}}
Breed Group: {{selected_breed.breed_group}}


Getting started. Version 2.0
Check out the demo to see Ingenia in action.
Look at the FAQ for any questions.
Go through the documentation and choose if you want to use Ingenia by the API or with the Ruby gem.
Contact us to get your API key or if you have any questions.
If you would like to verify your API key or code data path then use the status call.
Ruby API library
https://github.com/ingenia-api/ingenia_rubyRate limiting
Ingenia by default limits a user to 4 calls per second, for every type of API call. Contact us to have this limit increased or removed if needed.
Endpoint
All calls are made with the following end point
api.ingeniapi.com/v2/
Both HTTP and HTTPS are supported as protocols. JSON is the data encapsulation format
Basic response format
All responses from the API gateway have the following format
Fields
| Name | Type | Description |
|---|---|---|
| version |
string
|
The version of the API that is responding
Example"2.0" |
| data |
object
|
The data payload response from the call |
| status |
string
|
"okay" if the call is processed correctly, otherwise it will be "error" |
| message |
string
|
A message describing the nature of the error, returned if an error occurred |
Data structures
Item: create / update input
An item is a block of text to which you can associate tags, that belongs to a bundle
Fields
| Name | Type | Description |
|---|---|---|
| id |
string
|
An alphanumeric id unique to each bundle. You can use your own, or have Ingenia generate one for you
Example785uU423aC |
| text |
string
|
Your item's content. [1] |
| url |
string
|
Source URL to get text from. Ingenia will extract the most relevant text [1]
Examplehttp://www.example.com |
| bundle_id |
integer
|
ID of the bundle in which to put the item |
| tags |
array
|
An array with the name of the tags you wish to assign to this item. If the tag doesn't exist, it will be created [2]. Tags can also be created with user's score, see 2nd example
Example[ "startups", "saas", "marketing" ]' # or with user assigned score: { "statrups" : 0.2 , "sass" : 0.7, "marketing" : 1 } |
| tag_ids |
array
|
The Ingenia IDs of the tags you wish to assign to this item [2]
Example[ 45, 787, 23 ] |
| tag_sets |
hash
|
A hash of tag sets, each of which is an array of tags that you consider of the same type [2]
Example{ "topics": [ "startups", "saas", "marketing" ], "geography": [ "united kingdom" ] } |
Notes
[1] You can input content as one of these fields: text, a URL, a file. Formats supported for files include txt, html, pdf and all MS Office formats. If you send a file, it will extract the text from it.
The text and the URL are input as part of the JSON component. The file is sent as a multipart encoded http field.
[2] Only specify one of the following: tags, tag_ids or tag_sets
Example
{ text: "High tech startups and their positive power to change for good", tag_sets: { "Topics": [ "startups", "technology" ], "Mood": [ "positive" ], "Geography": [ ] } }
Item: show output
Fields
| Name | Type | Description |
|---|---|---|
| id |
string
|
A unique alphanumeric id
Example785uU423aC |
| text |
string
|
Your item's content |
| created_at |
date_time
|
When this item was created
Example2013-12-16T11:24:52+00:00 |
| updated_at |
date_time
|
When this item was last updated
Example2013-12-16T11:25:52+00:00 |
| last_classified_at |
date_time
|
When this item was last classified by the system; null if it hasn't been classified yet
Example2013-12-16T11:25:52+00:00 |
| tag_sets |
array
|
An array of tag sets associated to the item |
| tag_set |
hash
|
A hash containing the tag set id and the array of tags associated to the item |
| tag |
hash
|
A hash with the details of a tag associated to the item, including its id, name, score and user_selected |
| score |
numeric
|
A number which quantifies the strength of the association between an item and a tag, between 0 (lowest) and 1 (highest) |
| user_selected |
boolean
|
true if the tag was assigned to the item by the user, false if it was assigned by Ingenia |
| user_assigned_score |
float
|
score assigned by the user when tag was created |
Example
{ "id":"e19e134d0e79153349ff78a674283e0b", "last_classified_at":2013-12-16T11:25:07+00:00, "text":"How to get to scale with a saas startup in the UK? ...", "tag_sets": [ { "topics": { "id":156, "tags": [ { "id":4352, "name":"startups", "score":"0.8", "user_selected": "f", "user_assigned_score" : 0.7 }, { "id":7811, "name":"saas", "score":"0.45", "user_selected": "t" }, { "id":1327, "name":"marketing", "user_selected": "t" } ] } }, { "geography": { "id":622, "tags": [ { "id":3321, "name":"united kingdom", "score":"0.37", "user_selected": "t" } ] } } ] "created_at":"2013-12-16T11:24:52+00:00", "updated_at":"2013-12-16T11:24:56+00:00" }
Bundle: create / update input
A collection of items related to each other
Fields
| Name | Type | Description |
|---|---|---|
| name |
string
|
The name of your bundle |
| tag_set_ids |
array
|
An array of tag set IDs to be applied to this bundle. The tags in these tag sets will be available to the items in the bundle. If an existing bundle already has tag sets, then these can be removed by omitting the ID in the call. |
Example
{ "name":"Tech Startups", "tag_set_ids": [ 232, 332, 6582 ] }
Bundle: show output
A collection of items related to each other
Fields
| Name | Type | Description |
|---|---|---|
| id |
numeric
|
A unique numeric id generated by Ingenia |
| name |
string
|
The name of your bundle |
| tag_sets |
array
|
The tag sets that are currently attached to this bundle. Items within the bundle can use all the tags in these tag sets. |
| language |
string
|
The language of your bundle |
| created_at |
date_time
|
When this bundle was created
Example2013-12-16T11:24:52+00:00 |
| updated_at |
date_time
|
When this bundle was last updated
Example2013-12-16T11:25:52+00:00 |
Example
{ "id":47858, "name":"Tech Startups", "tag_sets": [ { "name": "technology", "id": 14562 }, { "name": "business", "id": 666 } ], "language": "en", "created_at":"2014-03-13T15:36:51Z", "updated_at":"2014-03-13T15:36:51Z", }
Tag: create / update input
Something you want to associate to an item, e.g., a concept, topic, tone, sentiment, keyword, person, company, product, etc.
Fields
| Name | Type | Description |
|---|---|---|
| name |
string
|
The name of your tag; we advise to make it short but meaningful; unique to each tag set |
| tag_set_id |
integer
|
The ID of the tag_set to which this tag belongs |
| description |
string
|
A description of this tag: this is helpful to define in a focused way how the tag should be used |
| disposition |
float
|
The disposition of the tag. Float value between 0 and 1, defaults to 0.5. Lower values will tend to privilege precision (we suggest 0.25); higher values will tend to privilege recall (we suggest 0.75). For most uses, the default value will work well. You will want to privilege precision (with a disposition < 0.5) if you want each tag assignment to be accurate, and are less worried about some items being missed, i.e., you prefer to have false negatives than false positives. If the disposition is 0, no item will be tagged with this tag. You will want to privilege recall (with a disposition > 0.5) if you want each tag assignment to occur, and are less worried about some items being tagged incorrectly, i.e., you prefer to have false positives than false negatives. If the disposition is 1, all items will be tagged with this tag. |
Example
{ "name":"Text Analytics", "tag_set_id":37874, "description":"A set of techniques designed to extract valuable information from textual content", "disposition": 0.5 }
Tag: show output
Something you want to associate to an item, e.g., a concept, topic, tone, sentiment, keyword, person, company, product, etc.
Fields
| Name | Type | Description |
|---|---|---|
| id |
numeric
|
A unique numeric id, generated by Ingenia |
| name |
string
|
The name of your tag |
| tag_set_id |
integer
|
The ID of the tag_set to which this tag belongs |
| confidence |
float
|
From 0 to 1; confidence gets closer to 1 the more Ingenia considers the training for this tag sufficient; if this value is low, we advise to increase your training set for this tag |
| consistency |
float
|
From 0 to 1; consistency gets closer to 1 the more Ingenia considers the items associated to this tag as similar to one another; if this value is low, we advise to re-assess the items associated to this tag |
| description |
string
|
A description of this tag |
| created_at |
date_time
|
When this tag was created
Example2013-12-16T11:24:52+00:00 |
| updated_at |
date_time
|
When this tag was last updated
Example2013-12-16T11:25:52+00:00 |
Example
{ "id":554273, "name":"Text Analytics", "tag_set_id":8547, "confidence":0.95, "consistency":0.92, "description":"", "created_at":"2014-03-13T12:59:32Z", "updated_at":"2014-03-13T12:59:32Z" }
Tag set: create / update input
A collection of thematically consistent tags
Fields
| Name | Type | Description |
|---|---|---|
| name |
string
|
The name of your tag set; we advise to make it short but meaningful; must be unique |
Example
{ "name":"Big Data" }
Tag set: show output
A collection of thematically consistent tags
Fields
| Name | Type | Description |
|---|---|---|
| id |
numeric
|
A unique numeric id, generated by Ingenia |
| name |
string
|
The name of your tag set |
| created_at |
date_time
|
When this tag set was created
Example2013-12-16T11:24:52+00:00 |
| updated_at |
date_time
|
When this tag set was last updated
Example2013-12-16T11:25:52+00:00 |
Example
{ "id":178751, "name":"Big Data", "created_at":"2014-03-12T12:17:33Z", "updated_at":"2014-03-12T12:17:33Z" }
Similarity response
An array of items that are related to an origin item sent via a similarity API call
Fields
| Name | Type | Description |
|---|---|---|
| id |
string
|
The ID of the origin item |
| text |
string
|
First 50 characters of the text of each related item |
| mode |
string
|
If 'tag', it will determine related items on the basis of their tags; if 'word', it will do so on the basis of the words contained in the item |
| similarity |
float
|
From 0 to 1, it measures how similar each related item is to the origin item; the response will sort items on descending similarity |
Example
{ [ { "item": { "id":12182, "text": "The fall in the rand has given wealthy Russians a new location to search for luxury..." }, "mode": "tag", "similarity": 0.62 }, { "item": { "id":9293, "text": "Robots tend to do jobs that no one wants to do. I am old enough to remember..." }, "mode": "tag", "similarity": 0.55 }, { "item": { "id":25333, "text": "The market for RMB credit raised outside China has gone four weeks without a..." }, "mode": "word", "similariy": 0.22 } ] }
API calls
Classifications
Classify
Path
POST
api.ingeniapi.com/v2/classifyParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
The text you want Ingenia to classify [1]
ExampleA comparative study of European secondary education systems illustrated issues related to their budgetary sustainability... |
| url |
string
|
The source URL from which to extract the text to be classified; Ingenia will extract the most relevant text [1]
Examplehttp://www.example.com |
| file |
multipart
|
File to be used as text source. Sent as multipart upload. Accepted file extensions are: Text (txt), Postscript Document Format (pdf) and Microsoft Office Documents (doc, docx, xlsx, ppt, pptx). [1]
Exampledocument.pdf |
| bundle_id |
integer
|
ID of the bundle to which the item belongs
Default[user's first bundle] |
| min_tags |
integer
|
Return at least these many tags
Default0 |
| max_tags |
integer
|
Return at most these many tags
Default6 |
Notes
[1] You can input content as one of these fields: text, a URL, a file. Formats supported for files include txt, html, pdf and all MS Office formats. If you send a file, it will extract the text from it.
The text and the URL are input as part of the JSON component. The file is sent as a multipart encoded http field.
Recommendation engine
Similar to
Path
GET
api.ingeniapi.com/v2/items/:id/similar_toParameters
| Name | Type | Description |
|---|---|---|
| id required |
string
|
ID of item for which we want other similar items |
| limit |
integer
|
Return these many results
Default10 |
| full_text |
boolean
|
Show the results with all their text, however long |
| mode |
string
|
Constrain matches to base similarity on just "tags", just "words", or "auto" (first tags, then words)
Defaultauto Examplemode=tags |
Response
Similar to text
Path
POST
api.ingeniapi.com/v2/similar_to_textParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
Text of item for which we want other similar items |
| limit |
integer
|
Return these many results
Default10 |
| full_text |
boolean
|
Show the results with all their text, however long |
| mode |
string
|
Constrain matches to base similarity on just "tags", just "words", or "auto" (first tags, then words)
Defaultauto Examplemode=tags |
Response
Similar to tags
Path
GET
api.ingeniapi.com/v2/similar_to_tagsParameters
| Name | Type | Description |
|---|---|---|
| tag_ids |
array
|
JSON encoded array of tag IDs for which we want relevant items
Example[ 45, 787, 23 ] |
| limit |
integer
|
Return these many results
Default10 |
| full_text |
boolean
|
Show the results with all their text, however long |
Response
Summarisation
Summarise
Path
POST
api.ingeniapi.com/v2/summariseParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
Text to summarise: the key sentences will be extracted |
| include_tags |
boolean
|
If true the resulting sentences will be organised by each tag associated to the text, if false they are returned as a list
Defaulttrue |
| order_by_position |
boolean
|
If true, the results will be ordered as they appear in the text, if false, they will be ordered by the score of the sentence
Defaultfalse |
| max_sentences |
integer
|
Maximum number of sentences to return
Default2 |
Items
Index
Path
GET
api.ingeniapi.com/v2/itemsDescription
Returns a list of all your itemsParameters
| Name | Type | Description |
|---|---|---|
| limit |
integer
|
Return these many results
Default10 |
| full_text |
boolean
|
Show the results with all their text, however long |
| offset |
integer
|
Offset the results I receive by this amount
Default0 |
Show
Path
GET
api.ingeniapi.com/v2/items/:idDescription
Returns a single itemParameters
| Name | Type | Description |
|---|---|---|
| id required |
string
|
The ID of the item you want to show |
| full_text |
boolean
|
Show the results with all their text, however long |
Response
Create
Path
POST
api.ingeniapi.com/v2/itemsDescription
Creates a new itemParameters
| Name | Type | Description |
|---|---|---|
| json |
json
|
An item is a block of text to which you can associate tags, that belongs to a bundle |
| file |
multipart
|
File to be used as text source. Sent as multipart upload. Accepted file extensions are: Text (txt), Postscript Document Format (pdf) and Microsoft Office Documents (doc, docx, xlsx, ppt, pptx). [1] |
| update_existing |
boolean
|
Choice of what to do if the item sent via a create call already exists on Ingenia, as determined by its item ID. If this field is true, the tags supplied will overwrite those on the existing item. If false, no data is modified and a response is returned with a 409 code (Conflict) together with the existing item as JSON.
Defaulttrue |
| classify |
boolean
|
If true, the response will also include a classification |
Notes
[1] You can input content as one of these fields: text, a URL, a file. Formats supported for files include txt, html, pdf and all MS Office formats. If you send a file, it will extract the text from it.
The text and the URL are input as part of the JSON component. The file is sent as a multipart encoded http field.
# Simply post item's text curl -X POST \ -F'json={ "text" : "Some inline text" }' \ http://api.ingeniapi.com/v2/items=$api_key&classify=true # Create an item with some text and assign a tag ('foo') to it with a score of 0.2. curl -X POST \ -F'json={ "text" : "Some inline text" , "tags" : { "foo" : 0.2 } }' \ http://api.ingeniapi.com/v2/items=$api_key&classify=true # Create an item with some text, create a new tag set ('my tag set') and add # a tag ('foo') with a score of 0.2 to that tag set.. curl -X POST \ -F'json={ "text" : "Some inline text" , "tag_sets" : { "my tag set" : { "foo" : 0.2 } } }' \ http://api.ingeniapi.com/v2/items=$api_key&classify=true # Create an item with the tag ('foo') curl -X POST \ -F'json={ "text" : "Some inline text" , "tags" : [ "foo"] }' \ http://api.ingeniapi.com/v2/items=$api_key&classify=true # Post url to retrieve content from and create an item with that content curl -X POST \ -F'json={ "url" : "http://www.zdziarski.com/blog/?p=3875" }' \ http://api.ingeniapi.com/v2/items=$api_key # Post a file using multipart/form-data upload and create an item with that content curl -X POST \ -F'json={}' \<EMAIL_ADDRESS>\ http://api.ingeniapi.com/v2/items=$api_key&update_existing=true
Update
Path
PUT
api.ingeniapi.com/v2/items/:idDescription
Update an existing itemParameters
| Name | Type | Description |
|---|---|---|
| id required |
string
|
The ID of the item you want to update |
| json |
json
|
An item is a block of text to which you can associate tags, that belongs to a bundle |
| file |
multipart
|
File to be used as text source. Sent as multipart upload. Accepted file types are: Text (txt), Postscript Document Format (pdf), Microsoft Office Documents (doc, docx, xls, xlsx, ppt, pptx). [1] |
Notes
[1] You can input content as ONE of: text, a URL, a file (formats supported include txt, html, pdf, all the MS Office formats). If you send a URL, Ingenia will extract the most meaningful text from it, e.g., ignoring links. If you send a file, it will extract the text from it.
The text and the URL are input as part of the JSON component. The file is sent as a multipart encoded http field.
Delete
Path
DELETE
api.ingeniapi.com/v2/items/:idDescription
Delete an existing itemParameters
| Name | Type | Description |
|---|---|---|
| id required |
string
|
The ID of the item you want to delete |
Similar to
Path
GET
api.ingeniapi.com/v2/items/:id/similar_toParameters
| Name | Type | Description |
|---|---|---|
| id required |
string
|
ID of item to get similar items to |
| limit |
integer
|
Return these many results
Default10 |
| full_text |
boolean
|
Show the results with all their text, however long |
| mode |
string
|
Constrain matches to base similarity on just "tags", just "words", or "auto" (first tags, then words)
Defaultauto Examplemode=tags |
Response
Bundles
Index
Path
GET
api.ingeniapi.com/v2/bundlesDescription
Returns a list of all your bundlesParameters
| Name | Type | Description |
|---|---|---|
| limit |
integer
|
Return these many results
Default10 |
| offset |
integer
|
Offset the results I receive by this amount
Default0 |
Show
Path
GET
api.ingeniapi.com/v2/bundles/:idDescription
Returns a single bundleParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the bundle you want to show |
Response
Find_by_name
Path
GET
api.ingeniapi.com/v2/bundles/find_by_nameDescription
Looks for a bundle that matches exactly text inputParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
Text of the bundle to look for |
Create
Path
POST
api.ingeniapi.com/v2/bundlesDescription
Creates a new bundleParameters
| Name | Type | Description |
|---|---|---|
| json |
json
|
A collection of items related to each other |
Update
Path
PUT
api.ingeniapi.com/v2/bundles/:idDescription
Update an existing bundleParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the bundle you want to update |
| json |
json
|
A collection of items related to each other |
Delete
Path
DELETE
api.ingeniapi.com/v2/bundles/:idDescription
Delete an existing bundleParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the bundle you want to delete |
Tags
Index
Path
GET
api.ingeniapi.com/v2/tagsDescription
List all your tagsParameters
| Name | Type | Description |
|---|---|---|
| limit |
integer
|
Return these many results
Default10 |
| offset |
integer
|
Offset the results I receive by this amount
Default0 |
curl http://api.ingeniapi.com/v2/tags?api_key=$api_key
Show
Path
GET
api.ingeniapi.com/v2/tags/:idDescription
View a single tagParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag you want to show |
Response
See Tag: show output
Find_by_name
Path
GET
api.ingeniapi.com/v2/tags/find_by_nameDescription
Looks for a tag that matches exactly text inputParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
Text of the tag to look for |
Create
Path
POST
api.ingeniapi.com/v2/tagsDescription
Create a new tagParameters
| Name | Type | Description |
|---|---|---|
| json |
json
|
Something you want to associate to an item, e.g., a concept, topic, tone, sentiment, keyword, person, company, product, etc. |
curl -X POST \ -F'json={ "tag_set_id" : 52, "name" : "wine" }' \ http://api.ingeniapi.com/v2/tags?api_key=$api_key
Update
Path
PUT
api.ingeniapi.com/v2/tags/:idDescription
Update an existing tagParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag you want to update |
| json |
json
|
Something you want to associate to an item, e.g., a concept, topic, tone, sentiment, keyword, person, company, product, etc. |
Merge
Path
POST
api.ingeniapi.com/v2/tags/:id/mergeDescription
Merge two or more existing tagsParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag into which you want to merge other tags; the resulting tag will have this name |
| tag_ids required |
array
|
A JSON encoded array of tag IDs that will be merged into the main tag
Example[ 23, 43, 2113 ] |
curl -X POST \ http://api.ingeniapi.com/v2/tags/8/merge?tag_ids='[7,8]'&api_key=$api_key
Delete
Path
DELETE
api.ingeniapi.com/v2/tags/:idDescription
Delete an existing tagParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag you want to delete |
Tag sets
Index
Path
GET
api.ingeniapi.com/v2/tag_setsDescription
List all your tag setsParameters
| Name | Type | Description |
|---|---|---|
| limit |
integer
|
Return these many results
Default10 |
| offset |
integer
|
Offset the results I receive by this amount
Default0 |
# Simple request to fetch all tag sets curl -s -q http://api.ingeniapi.com/v2/tag_sets?api_key=$api_key # ...and a bit more advanced example curl -s -q http://api.ingeniapi.com/v2/tag_sets?limit=100&offset=100&bundle_id=42&api_key=$api_key
Show
Path
GET
api.ingeniapi.com/v2/tag_sets/:idDescription
View a single tag setParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag set you want to show |
Response
Find_by_name
Path
GET
api.ingeniapi.com/v2/tag sets/find_by_nameDescription
Looks for a tag set that matches exactly text inputParameters
| Name | Type | Description |
|---|---|---|
| text |
string
|
Text of tag set to look for |
Create
Path
POST
api.ingeniapi.com/v2/tag_setsDescription
Create a new tag setParameters
| Name | Type | Description |
|---|---|---|
| json |
json
|
A collection of thematically consistent tags |
curl -s -X POST \ -F'json={ "name" : "new tag s" }' \ http://api.ingeniapi.com/v2/tag_sets?api_key=$api_key
Update
Path
PUT
api.ingeniapi.com/v2/tag_sets/:idDescription
Update an existing tag setParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag set you want to update |
| json |
json
|
A collection of thematically consistent tags |
Merge
Path
POST
api.ingeniapi.com/v2/tag_sets/:id/mergeDescription
Merge two or more existing tag setsParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag set into which you want to merge the other tag sets; the resulting tag set will have this name |
| tag_set_ids required |
array
|
JSON encoded array of tag set IDs to merge into main tag set
Example[ 12, 34, 56 ] |
Delete
Path
DELETE
api.ingeniapi.com/v2/tag_sets/:idDescription
Delete an existing tag setParameters
| Name | Type | Description |
|---|---|---|
| id required |
integer
|
The ID of the tag set you want to delete. |
Administrative Calls
Status
Path
GET
api.ingeniapi.com/v2/statusDescription
The status of your Ingenia account, indicating whether Ingenia has processed all your content; use this to test your API key, see [status call] for detailsParameters
| Name | Type | Description |
|---|---|---|
| total_bundles |
integer
|
Number of bundles you have own |
| processed_bundles |
integer
|
Number of bundles where all items have been processed |
| total_items |
integer
|
Number of items you have created |
| pending_items |
integer
|
Number of items Ingenia has not yet processed |
| processed_items |
integer
|
Number of items Ingenia has processed |
| total_tag_sets |
integer
|
Number of tag sets you own |
| processed_tag_sets |
integer
|
Number of tag sets Ingenia has processed |
| pending_tag_sets |
integer
|
Number of tag sets ready to process, but which Ingenia has not yet processed |
| untrained_tag_sets |
integer
|
Number of tag sets which do not have enough items to process |
| total_tags |
integer
|
Number of tags you have own |
| processed_tags |
integer
|
Number of tags Ingenia has processed |
| pending_tags |
integer
|
Number of tags Ingenia has not yet processed |
| untrained_tags |
integer
|
Number of tags which are not assigned to items |
| ready_to_classify |
boolean
|
True if all tags assigned to items have been processed |
Clear_data
Path
POST
api.ingeniapi.com/v2/clear_dataDescription
Delete all the data in your account; useful to restart from zero if the data was pollutedParameters
| Name | Type | Description |
|---|---|---|
| item_count |
integer
|
Number of items you have that are about to be deleted |
| tag_set_count |
integer
|
Number of tag sets you have that are about to be deleted |
| tag_count |
integer
|
Number of tags you have that are about to be deleted |
- Getting started: version 2
- Data structures
- Classifications
- Recommendation engine
- Summarisation
- Items
- Bundles
- Tags
- Tag sets
- Administrative Calls


Linguist
that
represents the search space as a lex tree. This linguist dynamically
generates the search states based upon the lex tree. The lex tree is
generated from the vocabulary supplied by the
LanguageModel
. The lex tree nodes contained 'compressed'
hmm nodes. The final unit of a word is not expanded until search
time. This avoids the large fanout that typically occurs at word
endings, reducing memory consumption and startup time significantly.


My Facebook is a public event page for Christian Singles who are looking for connections to network and get involved with the community. We have events 4 - 6 times a year with collaborating churches. We are looking to expand to networks in Ohio this year. Come check me out and leave me some feedback. "Pursue Your Goals with Ambition".
FacebookThese are Pictures of my Events, Activities, and Fun Journey in Life.
Instagram


Hello my name is Kevin and my major is in FCI. I have 2 younger brothers which makes me the oldest. I live about 45 minutes away which is tough sometimes but I make it do what it do. I am a second year in college and hope to become some sort of investigator like a detective. I was inspired by detective pikachu like many other.
I enjoy working out a lot. I had a time where I stopped going but now I go pretty frequently. I also enojoy video games. I don't play as much due to my busy schedule but it is fun when I do. I also like to eat food. It is one of my favorite hobbies by far. I'll literally eat anything.


Nearly 700,000 Jeep, Dodge SUVs recalled over electrical issues
by Noah ManskarFiat Chrysler Automobiles is recalling nearly 700,000 SUVs because of electrical faults that can affect engine startups.
The fuel pump relay problems in certain Jeep Grand Cherokee and Dodge Durango models from 2011 to 2013 can interrupt electrical current, preventing engines from starting or contributing to stalls, the automaker said Thursday.
The company says it is not aware of any accidents or injuries related to the faults.
The recall includes more than 528,000 vehicles in the US, along with 116,511 outside North America, 34,764 in Canada and 18,152 in Mexico.
Relays in the faulty SUVs “may have been installed in response to a previous recall,” Fiat Chrysler said in a statement. Most of the same vehicles were recalled for fuel pump relay problems in 2014 and 2015, Reuters reported.
Fiat Chrysler — which plans to merge with French automaker PSA — will tell affected drivers when they can schedule free repairs, the company said.
The recall came a day after General Motors accused Fiat Chrysler in a lawsuit of corrupting labor negotiations with a long-running bribery scheme. Fiat Chrysler called GM’s claims “nothing more than a meritless attempt to divert attention from that company’s own challenges.”
With Post Wires


For people who have less than 50 candidate in a month.
per month.
For people who have more than 50 candidate in a month
For people who want to pay as they use
per reminder.


Best wishes to Pinoys in SEA Games -- Duterte
by Efren MontanoPRESIDENT Rodrigo Duterte has extended his well-wishes to all Filipino athletes competing in the 30th Southeast Asian (SEA) Games, which the country will be hosting from November 30 to December 11.
“I wish them all the luck and my fervent prayers go with them,” Duterte told reporters in an interview in Davao City.
The games will be held in venues in Metro Manila, Clark, and Subic in Pampanga and other areas.
The Rizal Memorial Sports Complex, the Athletics Stadium, and Aquatic Center in New Clark City, and the Manila Polo Club are among the venues that will welcome athletes from countries neighboring the Philippines until Dec. 11.
The country’s hosting of the biennial regional multi-sporting event is off to a rough start as several football teams from neighboring countries encountered problems with transportation and hotel arrangements upon their arrival in the country over the weekend.
The Philippine Southeast Asian Games Organizing Committee (Phisgoc), the private organization in charge of organizing the games, has already apologized for their shortcomings.


Maintaining muscle in middle age may help men's hearts later
by HealthDay NewsMiddle-aged men who maintain their muscle mass may lower their risk of heart disease as they get older, a new study suggests.
Beginning in the mid-30s, muscle begins to decline by about 3 percent each decade. Previous studies found that muscle mass is associated with heart attack/stroke risk, but those studies focused on people with heart disease.
In this new study, the researchers wanted to examine if muscle mass in middle age might be associated with long-term heart health in people without heart disease.
The study included more than 1,000 men and women, aged 45 and older, who were followed for 10 years. During that time, 272 participants developed heart disease, including stroke and minor stroke.
People with the most muscle were 81 percent less likely to develop heart disease than the least muscular. Those with the most muscle had the lowest rates of risk factors such as high blood pressure, diabetes and obesity, the investigators found.
Further analysis showed that muscle mass was significantly linked to lower heart disease risk among men, but not women.
Possible reasons for this gender disparity include age-related hormonal differences and the fact that the men had more muscle to start with, according to the study authors. Their findings were published online Nov. 11 in the Journal of Epidemiology & Community Health.
Because this was an observational study, it can't establish cause and effect. Even so, the findings "point to the importance of [skeletal muscle mass] preservation in relation to [cardiovascular disease] risk," the authors wrote in the report.
Regular physical activity, including resistance training, and a diet rich in protein may help preserve lean muscle mass as people get older, the researchers suggested.
Demosthenes Panagiotakos, a professor in the School of Health Science and Education at Harokopio University in Athens, Greece, led the study.
More information
The U.S. National Institute on Aging has more about exercise.
Copyright 2019 HealthDay. All rights reserved.
(0) Leave a comment
upi.com/6960176
Latest Headlines
Health News // 2 hours ago
Statins won't harm aging brains, and might even help
Concerns that cholesterol-lowering statin drugs can impair brain health appear to be unfounded, according to new research.
Health News // 5 hours ago
FDA approves first contact lens that slows myopia progression
MiSight, the first contact lens indicated to slow the progression of myopia in children ages 8 to 12 years, has been approved by the U.S. Food and Drug Administration, the agency announced Friday.
Health News // 5 hours ago
Expert: Herbal aids can slow wound healing in breast cancer spread to skin
Using herbal products to treat breast cancer that's spread to the skin could slow wound healing and interfere with chemotherapy or hormone treatment, an expert warns.
Health News // 6 hours ago
Prescription-strength fish oil slows clogging in arteries, study shows
Icosapent ethyl -- a purified fish oil drug sold under the brand name Vascepa -- put the brakes on key aspects of plaque formation after nine months of use, according to early results from an ongoing clinical trial.
Health News // 7 hours ago
Entresto, Corlanor are widely used, cost-effective options for heart failure, study finds
Nov. 18 (UPI) -- Analysis of Medicare Part D and Medicaid data highlights increased use and favorable cost profiles for Entresto and Corlanor, two drugs approved in 2015 to treat heart failure.
Health News // 7 hours ago
Studies confirm HPV vaccine is safe
The HPV vaccine gives parents a chance to prevent their children from developing some types of cancer, and two new studies reaffirm what past research has found -- the vaccine is safe.
Health News // 7 hours ago
Women with diabetes at greater risk of heart disease
Diabetes might be more deadly for women than men, at least when it comes to heart troubles, new research shows.
Health News // 8 hours ago
Study finds links between disease outbreaks, vaccination laws
Nov. 18 (UPI) -- When it comes to vaccine-preventable diseases like measles and mumps, outbreaks lead to political action -- often to widen vaccine exemptions, according to an analysis published Monday in the journal JAMA Pediatrics.
Health News // 8 hours ago
Expensive device used in heart surgeries might pose dangers
The pricey high-tech Impella pump that maintains blood flow during heart procedures could be more dangerous to patients than its low-tech predecessor, a pair of new studies finds.
Health News // 1 day ago
Cheap, older gout drug could be lifesaver after heart attack
A cheap drug that's been around for centuries as a gout treatment might also shield heart attack survivors from future heart crises, new trial results show.


Shilen Priest Lelrikia:
Are you talking about Tiat, the witch of the Dark Black Dragon? I can tell you what I know of her...
Listen.


Hydration is essential to good health and vitality…we all need plenty of clean drinking water. In the workplace, our water needs to be clean, cold, convenient and affordable.
Bottled water is a messy business. Plastic water bottles are made from oil…17 million barrels a year, actually! And it takes three times the amount of water to make the bottle as it does to fill it.
Once manufactured, these bottles are filled with treated water at a bottling facility, warehoused and then loaded onto trucks…and finally, delivered to their destination…where they clutter up your office.
The bottled water cooler itself is an open well with no barriers to air or water-borne bacteria or other contamination.
And you can almost count on someone being injured while lifting those awkward 40-pound bottles.
Bottleless coolers eliminate plastic bottles, along with all of their problems by using the latest water filtration and purification technologies to transform already-available tap water. This multi-stage process removes particulates like dirt and rust, along with lead, chlorine and other harmful chemicals.
As a final barrier to contamination, the purified water is stored in a sealed, sanitary holding tank. It’s like having a purification plant right in your office...providing a continuous flow of cold, clean and delicious drinking water…that’s better than bottled.
By going Bottleless, we can reduce the amount of carbon emissions entering our atmosphere…and while making our planet greener; you’ll save some other valuable green as well.
Office H2O are Bottleless water experts dedicated to purifying today’s workplace with healthy sustainable drinking water. Join us in creating a healthier planet, one drop at a time.


IT technical support of "Encyclopedia of Pskov" (ISBN 5-901374-01-0) book editors team and accounting team, 2004-2008 link, Download
IT technical support of "Teatre of a word" in Pskov, 2007-2011
IT technical support of "Encyclopedia of Pskov" (ISBN 5-901374-01-0) book editors team and accounting team, 2004-2008 link, Download
IT technical support of "Teatre of a word" in Pskov, 2007-2011


Before Change
runner: current runner
reduced_metric = runner.valid_metrics[self.reduced_metric]
lr, momentum = self._scheduler_step(
scheduler=self._scheduler, reduced_metric=reduced_metric
)
if self.scheduler_key is not None:
runner.epoch_metrics[f"lr/{self.scheduler_key}"] = lr
if momentum is not None:
runner.epoch_metrics[
f"momentum/{self.scheduler_key}"
] = momentum
else:
runner.epoch_metrics["lr"] = lr
if momentum is not None:
runner.epoch_metrics["momentum"] = momentum
def on_stage_start(self, runner: "IRunner") -> None:
Stage start hook.
Args:
After Change
runner: current runner
reduced_metric = runner.valid_metrics[self.reduced_metric]
lr_list, momentum_list = self._scheduler_step(
scheduler=self._scheduler, reduced_metric=reduced_metric
)
self._update_lr_and_momentum_in_metrics_dict(
runner.epoch_metrics, lr_list, momentum_list
)
def on_stage_start(self, runner: "IRunner") -> None:
Stage start hook.


I did not launch PIRATE Assetchain.
I am not a developer of PIRATE Assetchain.
I do not advise anyone anything about PIRATE Assetchain.
Don’t blame me for anything regarding it.
ryman11204-Sep-18 08:57 PM
And down she goes. Wake up happy go home disappointed. KMD is all over the place.
It looks really nice from up here - 6mil from the bottom (edited)
Deleted User04-Sep-18 11:37 PM
Is that an exchange or jl? Or is the top spot some anonymous whale
jspook1604-Sep-18 11:45 PM
All I want for Christmas is to be a whale..
shnu04-Sep-18 11:46 PM
imagine after the current whale buy...some darkweb market start to list KMD. That should connect all the dots. #speculating
jspook1605-Sep-18 12:12 AM
The RD7..Pi whale is king
blackjok3r05-Sep-18 01:33 AM
The why that whale is going, maybe he thinks KMD will be the new BTC .... or he found a way to print as much BTC as he likes
bishop05-Sep-18 01:36 AM
Well, when you have KMD that is cheap relative to it's history priced in BTC (and priced in fiat because of "cheap" BTC), coupled with 5% rewards and actual tech backing things, seems lower risk than other crap to put coins in.
FundazuSafu05-Sep-18 01:36 AM
I heard it was satoshi himself @blackjok3r
blackjok3r05-Sep-18 01:38 AM
Yeah agreed its probably the lowest risk in almost of all of crypto, and a whale that big can also keep the price as low as he likes to buy as much as he can at this price too 5 million sell wall would do the trick
bishop05-Sep-18 01:39 AM
I remember user OTOH coming into Darkcoin in the early days and buying up like 700k coins.
jspook1605-Sep-18 01:53 AM
finney who
BlackJesus05-Sep-18 01:56 AM
Komodo would be the best choice even better than zcash or xmr because of the barterdex
jspook1605-Sep-18 01:57 AM
and dont forget about the ecosystem too
BlackJesus05-Sep-18 01:57 AM
Get Komodo wash it then atomic swap it "you've got fresh coins."
With no trace left behind all trading data on the dex is client side
jspook1605-Sep-18 02:03 AM
we may never know who jl is....but the world will know what jl has created ....
Ode for the Birthday of Queen Anne, 1713 Vocalconsort Berlin & Akademie für Alte Musik Berlin, Marcus Creed Andreas Scholl, countertenor Hélène Guilmette, so...


Iris's Bio
Iris is a creative project manager. She has a lovely voice and love music.
Skills
- Management
- Creativity
- Technology
- Team work
Quirky Fact
And purr ducks canning owls at a squeal.
Superpower
Magical voice
hello world
Iris is a creative project manager. She has a lovely voice and love music.
And purr ducks canning owls at a squeal.
Magical voice


{{email.hash}} totally hashes your {{email.text}} awesome e-mail!
I need your e-mail, and it's got to be valid!
I sooo totally love your Gravatar :-)
I couldn't find your Gravatar selfie... wanna make one?


AP Exclusive: US officials told of Ukraine’s Trump anxiety
by Associated PressWASHINGTON (AP) — U.S. officials were told that Ukraine’s leader was feeling pressure from the Trump administration to investigate Democrats, even before his summer phone call with President Donald Trump, two people with knowledge of the briefings tell The Associated Press.
The people say that at least three U.S. officials were briefed on Ukraine President Volodymyr Zelenskiy’s worries before his July 25 phone call with Trump that has led to House impeachment hearings in Washington. The people spoke on condition of anonymity to discuss the matter.
The Ukrainian leader later denied feeling pressure in a joint news conference with Trump in September.
Congressional Republicans point to that later public statement to defend Trump. They say if Ukraine’s leader felt no pressure to investigate Joe Biden, the allegations against Trump are misplaced.


--- layout: post status: publish published: true title: SSSB Adapter v1.5 author: display_name: Tomas Restrepo login: tomasr email<EMAIL_ADDRESS>url: http://winterdom.com/ author_login: tomasr author_email<EMAIL_ADDRESS>author_url: http://winterdom.com/ wordpress_id: 65 wordpress_url: http://winterdom.com/2007/01/sssbadapterv15 date: '2007-01-11 19:24:19 +0000' date_gmt: '2007-01-11 19:24:19 +0000' categories: - BizTalk tags: [] comments: [] ---
The Two Connect guys (Jesus and Joel) announced the release of v1.5 of their SQL Server Service Broker adapter for BizTalk Server 2006. The trial version is now available over at their AdapterWorx site.


By Phil Curtolo
What do you get when you combine two ugly cartoon characters with the voices of some of today's most talented actors? You get MTV's newest production Beavis & Butthead Do America.
The moronic duo set out to find their stolen TV and end up as the most wanted people in America, as they are chased across the country in an old folks touring bus by a perverted FBI director.
Along the way, they get mixed up with Muddy Grimes, a man who want to pay them to "do" his wife, Dallas.  Well, she's on to them and slips them a deadly chemical weapon, which they end up taking to the White House to create mass hysteria and chaos. In the end, they end up pinning the whole thing on their neighbor, Tom Anderson.
The celebrity voices in the film were amazing, including Demi Moore, Bruce Willis, David Spade, Greg Kinnear, and David Letterman. Also featured were Cloris Leachman, whose "…oh, that's nice" line appears in the trailer and Unsolved Mysteries Robert Stack, who played the FBI director who constantly asked for "full cavity searches…"
In their first trip to the big screen, Beavis' memorable Cornholio still was a favorite, as he walked around in his underwear chanting, "You will give me T.P. for my bunghole!" and "Are you threatening me?"
The film or the television show couldn't have come together without the voice and mind of Beavis & Butthead creator, Mike Judge. He provides the voices for the title characters, Tom Anderson, their fruity teacher Mr. Van Dreesen, and the nervous Principal McVicker.
Don't get me wrong here, this is not a movie for people who liked The English Patient.  If you like the TV show, then the movie is a must see. If you don't, then you shouldn't waste your time. Grade: B-, *** out of *****
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


Page maintained by Ke-Sen Huang.
If you have additions or changes, send an e-mail.
Information here is provided with the permission of the ACM.
Note that when possible I link to the page containing the link to the actual PDF or PS of the preprint.
I prefer this as it gives some context to the paper and avoids possible copyright problems with direct linking.
Thus you may need to search on the page to find the actual document.
ACM Digital Library: Proceedings of the 4th international symposium on Non-photorealistic animation and rendering
the ACM Digital Library (DOI) Link for the paper
the link of author version paper
the link of project page
Changelog
Real-time 3D NPR
- Real-Time Watercolor Illustrations of Plants Using a Blurred Depth Test
-
Thomas Luft,
Oliver Deussen
- Real-time Simulation and Stylized Rendering of Smoke
-
Morgan McGuire,
Andi Fein
- Real-Time Pen-and-Ink Illustration of Landscapes
-
Liviu Coconu,
Oliver Deussen,
Hans-Christian Hege
- Real-Time Pencil Rendering
-
Hyunjun Lee,
Sungtae Kwon,
Seungyong Lee
Images and Video
- Color Sketch Generation
-
Fang Wen, Qing Luan, Lin Liang,
Ying-Qing Xu,
Heung-Yeung Shum
- Felt-Based Rendering
-
Peter O'Donovan,
David Mould
- Stylizing 2.5-D video
-
Noah Snavely,
C. Lawrence Zitnick,
Sing Bing Kang,
Michael Cohen
Mosaics and Mazes
- A Spectral Approach to NPR Packing
-
Ketan Dalal,
Allison W. Klein,
Yunjun Liu,
Kaleigh Smith
- Organic Labyrinths and Mazes
-
Karan Singh,
Hans Pedersen
Interaction and Evaluation
- Empathic Painting: Interactive stylization using observed emotional state
-
Maria Shugrina,
Margrit Betke,
John Collomosse
- Interactive 3D Fluid Jet Painting
-
Sangwon Lee,
Sven Olsen,
Bruce Gooch
- Modeling Plant Structures Using Concept Sketches
-
Fabricio Anastacio,
Mario Costa Sousa,
Faramarz Samavati,
Joaquim Jorge
- Non-Photorealistic Rendering in Context: An Observational Study
-
Tobias Isenberg,
Petra Neumann,
Sheelagh Carpendale,
Mario Costa Sousa,
Joaquim Jorge
Abstraction
- X-Toon: An Extended Toon Shader
-
Pascal Barla,
Joëlle Thollot,
Lee Markosian
- Tweakable Light and Shade for Cartoon Animation
-
Ken Anjyo,
Shuhei Wemler,
William Baxter
- Interactive watercolor rendering with temporal coherence and abstraction
-
Adrien Bousseau,
Matthew Kaplan,
Joelle Thollot,
Francois Sillion
kesen.huang@gmail.com


--- layout: post title: Click opera - Fixated on the fixie date: '2008-05-25T10:04:30+01:00' tags: [] tumblr_url: http://backlog.robbevan.com/post/35976987/click-opera-fixated-on-the-fixie --- Click opera - Fixated on the fixie


Man Arrested at Heathrow Airport Charged With Terrorism Offence
Mamun Rashid, 26, will appear before a court on Monday to face charges of preparing terrorist acts, a statement by the police says.
A man who was arrested at Heathrow Airport in London after arriving from Turkey has been charged with terrorism offences.
The 26-year-old man, identified as Mamun Rashid, was arrested on Thursday on suspicion of offences related to the military conflict in Syria. He will now appear in court on Monday to be charged with the preparation of terrorist acts, according to a statement by police.
Earlier this week, the Turkish Ministry of Internal Affairs said that it was expelling eight Daesh* prisoners to Germany and Great Britain.
*Daesh (also known as ISIS/ISIL/IS) is a terrorist group outlawed in Russia


DON'T! Seriously... this is bad... But, if you must...
Arrow keys to move
Hold shift down to move slowly
Press Z to shoot
Press X to use a bomb (clears nearby bullets)
Grab the thunders* that enemies drop (when killed) to increase your power
You are only killed if the center of your belt is hit
You may graze bullets for extra points
You get an extra life every 10000 points (or 100000, not sure...)
Controls may be remapped to any key
* No, those aren't bananas...


THE INCREDIBLY TRUE ADVENTURES OF TWO GIRLS IN LOVE A film review by Wendy Betts Copyright 1995 Wendy Betts
Written and directed by Maria Maggenti Starring Laurel Hollomon and Nicole Parker
As sweet and refreshing as a frosty glass of lemonade, this is a lovely little movie that leaves the heart both warmed and aching. It's a tender, very funny, utterly sincere look at first love for two teenagers who seem to have nothing in common--except that they're both girls. Randy, who lives with her aunt in a poor but happy lesbian household, is a social outcast, failing in school; Evie is rich, intellectual and popular. The fact that Randy is white and Evie is black is the least of their problems.
The inevitable culture conflicts that arise when Randy and Evie fall in love are played largely for laughs, as when Evie comes out to her utterly vapid friends, who advise her to try and rent that movie about the two girls who went to the prom, and a marvelous slapstick scene in which the two girls are caught in bed by Evie's mother, who's far more freaked out about the mess they made of her house than about her daughter having sex. But the often broad humor takes nothing away from what the story is really about: falling in love. The typical cliches of first love are shown here with such warmth and charm that they seem newly fresh and unique--just as they do in real life when people fall in love. The girls playing Randy and Evie were so believable that I felt a little embarrassed during a tender scene in which they make love for the first time; although respectfully and fairly modestly filmed, it seemed too personal for a stranger to be watching.
Both comic and romantic, naturally THE INCREDIBLY TRUE ADVENTURES OF TWO GIRLS IN LOVE is a "feel-good" kind of movie, an accolade it deserves far more than many slicker, more professional films. But although Evie and Randy's problems as a lesbian couple are treated lightly, they're an undercurrent that can never be totally disregarded. The ending of the film doesn't offer a perfect resolution, but poignantly symbolizes both the difficulty any mismatched lovers have of shutting out the censorious voices of the world, and the fact that it is still worth trying.
-- Wendy E. Betts, Editor "The WEB: Celebrating Children's Literature" finger<EMAIL_ADDRESS>http://www.armory.com/~web/web.html
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


Paddy McGuinness's panel show appearances
Paddy McGuinness (born 1973-08-14[ref]) has appeared in 46 episodes between 2005-2018. Paddy McGuinness on IMDB. Paddy McGuinness on Wikipedia. Paddy McGuinness on Chortle.
- 2018-09-13 / Celebrity Juice
- 2018-05-10 / Celebrity Juice
- 2017-09-21 / Celebrity Juice
- 2017-05-04 / Celebrity Juice
- 2017-04-13 / Celebrity Juice
- 2016-12-22 / Celebrity Juice
- 2016-12-15 / Celebrity Juice
- 2016-11-10 / Celebrity Juice
- 2016-03-31 / Celebrity Juice
- 2015-12-18 / Loose Women
- 2015-11-12 / Celebrity Juice
- 2015-11-03 / Loose Women
- 2015-07-10 / Loose Women
- 2015-04-11 / Play To The Whistle
- 2015-01-21 / Loose Women
- 2014-12-11 / Celebrity Juice
- 2014-09-20 / A Question of Sport
- 2014-09-01 / Duck Quacks Don't Echo
- 2014-05-01 / Loose Women
- 2014-04-24 / Celebrity Juice
- 2013-12-30 / A Question of Sport
- 2013-12-03 / Loose Women
- 2013-10-31 / Celebrity Juice
- 2013-06-20 / Loose Women
- 2013-02-28 / Celebrity Juice
- 2012-09-04 / Loose Women
- 2012-04-05 / Celebrity Juice
- 2011-12-22 / Celebrity Juice
- 2011-12-15 / Loose Women
- 2011-06-04 / A Question of Sport
- 2011-05-05 / Celebrity Juice
- 2010-12-10 / A Question of Sport
- 2010-09-29 / Loose Women
- 2010-06-11 / 8 Out of 10 Cats
- 2010-03-25 / Celebrity Juice
- 2009-09-29 / Loose Women
- 2009-09-15 / Loose Women
- 2009-08-26 / Shooting Stars
- 2009-04-29 / Celebrity Juice
- 2008-12-15 / Loose Women
- 2008-09-24 / Celebrity Juice
- 2007-11-16 / Loose Women
- 2006-11-08 / Loose Women
- 2006-04-04 / Loose Women
- 2006-02-17 / 8 Out of 10 Cats
- 2005-07-15 / 8 Out of 10 Cats


Contents of this page:
Options:
Code modules are translated into Python code modules with a functions and subroutines being converted to module level functions. Variables, functions and subroutines which are declared as Public or Global are flagged as globally accessible which means that, if another module tries to access them, then that module will acquire an import statement to import the code module and the variable reference will be replaced by a fully qualified name (module.name).
VB(VBCodeModule):
Public Name As String Public Age As Single Private ID As Long Public Sub checkAge() If Age = 0 Then Age = 1 End Sub ' Private Sub setUp() ID = Rnd() If ID = 0 Then setUp End Sub
There are no specific options relating to code modules.
Some General options apply:
[General] # Yes or No, whether to try to automatically extract docstrings from the code TryToExtractDocStrings = Yes
Syntax: TryToExtractDocStrings = Yes | No
If TryToExtractDocStrings is set then any contiguous block of comment lines found at the start of the module are interpretted as a docstring and added to the class definition. The docstring terminates with the first non-comment line.
VB(VBCodeModule):
' VB2PY-GlobalSet: General.TryToExtractDocStrings = Yes ' This is the documentation for the module ' This line is also documentation ' So is this one ' And this is the last Public Name As String Public Age As Single Private ID As Long Public Sub checkAge() If Age = 0 Then Age = 1 End Sub ' Private Sub setUp() ID = Rnd() If ID = 0 Then setUp End Sub ' VB2PY-Unset: General.TryToExtractDocStrings


My interest primarily lies in building quantitative models that provide algorithmic and/or mathematical framework for cortical mechanisms underlying everyday cognitive tasks, primarily visual processing. Before joining University of Tuebingen, I spent some time as a Research Assitant at Computational Visual Neuroscience Lab (UMN) , where I worked with Professor Kendrick Kay on developing a fully generative the model that factors in both bottom-up, sensory-driven responses and top-down, goal-driven attentional state, connections to accurately characterize cortical responses for arbitrary combinations of stimuli and attentional loci. In the "distant" past, I focussed on applying signal processing and machine learning to extract inherent patterns in Magnetic Resonance (MR) images, in both its native image space and frequency space (also called k-space). I undertook my bachelor thesis at Medical Image Processing Lab (EPFL) where I studied structural and functional correlates of personality under the supervision of Professor Dimitri Van de Ville and Professor Sven Haller. Prior to that I was a visiting student researcher at Tomography Lab (Indian Institute of Science) where I worked on developing variable density sampling (VDS) schemes for fast and efficient reconstruction of MR Images under the supervision of Professor Kasi Rajgopal.
Abstract: The revised NEO Personality Inventory (NEO-PI-R), popularly known as the five-factor model, defines five personality factors: Neuroticism, Extraversion, Openness to Experience, Agreeableness, and Conscientiousness. The structural correlates of these personality factors are still a matter of debate. In this work, we examine the impact of subtle cognitive deficits on structural substrates of personality in the elderly using DTI derived white matter (WM) integrity measure, Fractional Anisotropy (FA). We employed canonical correlation analysis (CCA) to study the relationship between each personality factor of the NEO-PI-R and FA measures. Agreeableness was the only personality factor to be associated with FA patterns in both population groups. In MCI cases, Openness was significantly related to FA data whereas the inverse was true for Conscientiousness. Furthermore, we generated saliency maps using bootstrapping strategy which revealed a larger number of positive correlations in healthy brain aging in contrast to the MCI status. The MCI group was found to be associated with a predominance of negative correlations indicating that higher Agreeableness and Openness scores were mostly related to lower FA values in interhemispheric and cortico-spinal tracts and a limited number of higher FA values in cortico-cortical and cortico-subcortical connection. Altogether these findings support the idea that WM microstructure may represent a valid correlate of personality dimensions, and also indicate that the presence of early cognitive deficits led to substantial changes in the associations between WM integrity and personality factors.
Abstract: Swarm optimization algorithms which are motivated by the hierarchical working, efficient self-organizing skills and highly developed foraging ability of the bee population are being increasingly used in wide array fields. In this paper, we propose a novel data-driven algorithm, using swarm intelligence of artificial bee colony (ABC), called k-ABC, to generate an adaptive variable density sampling (VDS) scheme for compressive sampling (CS) based data acquisition for fast MR imaging. The algorithm exploits the behaviour of the three types of bees - scout-bees, employed-bees and onlooker bees, with certain modifications based on the characteristics of variable density sampling. We introduce the concept of searching for the high quality food sources in annular regions of varying widths, called as bins, to optimise the process of foraging. The k-ABC algorithm uses magnitude k-space distribution of a reference single-slice MR image as the underlying fitness value distribution to generate an adaptive sampling scheme. We have also addressed the problem of designing a tailor-made template sampling scheme for 3D MR volume imaging for the very first time. Retrospective simulations show that the proposed k-ABC adaptive VDS scheme gives significant improvement over other sampling schemes for both single slice and multi-slice MR imaging. Further, for the task of implementation, a modified projection algorithm that takes into account the location of each sample in k-space has been introduced, which provides a significant improvement in the reconstructed image quality with minimum trade-off in terms of scan-time.
Abstract: There exists an inherent characteristic distribution in the magnitude spectrum of the Fourier Transform of Magnetic Resonance (MR) images, also referred to as k-space, the high energy samples being concentrated near the center of the magnitude k-space and low energy samples at larger distances. However, there is no method that directly takes into account both the spatial location and the energy contained by a sample, while generating a variable density sampling (VDS) distribution. In this paper, we propose two methods that exploit the underlying structure in MR images and produce adaptive, organ-specific, VDS schemes. First,a weighted K-Means algorithm, an unsupervised learning method, that groups or bins samples with similar energy level weighted by its distance from the center of k-space. Second, a simple binning-based approach that maximizes the overall energy content of the sampling scheme and minimizes the average distance between neighboring samples. Extensive retrospective CS-MRI simulations have shown that the proposed methods perform significantly better than the existing adaptive methodologies.
Abstract: Categorisation of huge amount of data on the multimedia platform is a crucial task. In this work, we propose a novel approach to address the subtle problem of selfie detection for image database segregation on the web, given rapid rise in the number of selfies being clicked. A Convolutional Neural Network (CNN) is modeled to learn a synergy feature in the common subspace of head and shoulder orientation, derived from Local Binary Pattern (LBP) and Histogram of Oriented Gradients (HOG) features respectively. This synergy was captured by projecting the aforementioned features using Canonical Correlation Analysis (CCA). We show that the resulting networks convolutional activations in the neighbourhood of spatial keypoints captured by SIFT are discriminative for selfie-detection. In general, proposed approach aids in capturing intricacies present in the image data and has the potential for usage in other subtle image analysis scenarios apart from just selfie detection. We investigate and analyse the performance of the popular CNN architectures (GoogleNet, Alexnet), used for other image classification tasks, when subjected to the task of detecting the selfies on the multimedia platform. The results of the proposed approach are compared with these popular architectures on a dataset of ninety thousand images comprising of roughly equal number of selfies and non-selfies. Experimental results on this dataset shows the effectiveness of the proposed approach.
Abstract: Detection of the start and the end time of words in a continuous speech plays a crucial role in enhancing the accuracy of Automatic Speech Recognition (ASR). Hence, addressing the problem of efficiently demarcating word boundaries is of prime importance. In this paper, we introduce two new acoustic features based on higher order statistics called Density of Voicing (DoV) and Variability of Voicing (VoV) obtained from the bispectral distribution, which when used along with the popular prosodic cues helps in drastically reducing the recognition error rate involved. An ensemble of three different models has been designed to minimize the false alarms, during word boundary detection, by maximizing the uncorrelatedness in prediction from each model. Finally, the majority-voting rule was used to decide if the given frame encompasses a word boundary. The contribution of the work lies in: (i) Converting word boundary detection into a supervised learning problem (ii) Introduction of two new higher order statistical features (iii) Using ensemble methods to find the best model for prediction. Experimental results for NTIMIT Database shows the efficacy of the proposed method and its robustness to noise added during telephonic transmission.
Abstract: The self-sustained dynamics of the bee population in nature is a result of their hierarchical working culture, efficient organizing skills and unique highly developed foraging ability, which enables them to interact effectively among each other as well as with their environment. In this paper, a novel algorithm utilizing the bees swarm intelligence, and its heuristics based on quality and quantity of food sources (nectars) is proposed to generate a variable density sampling (VDS) scheme for compressive sampling (CS) based fast MRI data acquisition. The algorithm uses the scout-bees for global random selection process which is further fine-tuned by employed and onlooker-bees who forage locally in the neighborhood giving prime importance to points possessing high fitness values (or high energy) usually located around the center of k-space. The algorithm introduces the concept of searching for the high quality food sources in annular regions, called as bins, of varying widths. Retrospective CS-MRI simulations show that the proposed k-ABC based VDS scheme performs significantly better than other sampling schemes.


{{if .ForwardedPrefix }}
{{end}}
Cyphernode info page
Cyphernode info
Status
Files
Files:
The following files have been encrypted with your configuration passphrase and your client keys passphrase, respectively:
Download your Cyphernode
configurations
, can be used for another Cyphernode deployment
Download Client
API ID's and keys
, needed in your client apps
{{if index .FeatureByName "lightning" }}
Your Lightning Network Wallet (Spark Wallet)
{{end}}
Features
{{range .Features}}
{{.Name}}{{if .CoreFeature}}
(core component)
{{end}}
{{if .Working}}
{{else}}
{{end}}
{{else}}
no rows
{{end}}
Containers
{{range .Containers}}
{{.Name}}
{{if .Active}}
{{else}}
{{end}}
{{else}}
no rows
{{end}}


--- layout: splash ref: splash permalink: /index.html ---
{{ site.language.en }} {{ site.language.fr }}