|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface TopicIF
PUBLIC: This interface is implemented by objects representing topics in the topic map model.
Note that topic identity is a difficult area, since it depends on the availability of information from outside the topic map. In a nutshell, topics represent addressable subjects, but addressable subjects may be the same even if their locators are very different. In general, the determination of equality between addressable subjects cannot be fully guaranteed, and applications using this API will need to be aware of their limitations and capabilities in this respect - and that other topic map applications they communicate with may have lesser or greater powers to determine subject identity.
| Field Summary | |
|---|---|
static String |
EVENT_ADD_OCCURRENCE
|
static String |
EVENT_ADD_SUBJECTIDENTIFIER
|
static String |
EVENT_ADD_SUBJECTLOCATOR
|
static String |
EVENT_ADD_TOPICNAME
|
static String |
EVENT_ADD_TYPE
|
static String |
EVENT_ADDED
|
static String |
EVENT_MODIFIED
|
static String |
EVENT_REMOVE_OCCURRENCE
|
static String |
EVENT_REMOVE_SUBJECTIDENTIFIER
|
static String |
EVENT_REMOVE_SUBJECTLOCATOR
|
static String |
EVENT_REMOVE_TOPICNAME
|
static String |
EVENT_REMOVE_TYPE
|
static String |
EVENT_REMOVED
|
| Fields inherited from interface net.ontopia.topicmaps.core.TMObjectIF |
|---|
EVENT_ADD_ITEMIDENTIFIER, EVENT_REMOVE_ITEMIDENTIFIER |
| Method Summary | |
|---|---|
void |
addSubjectIdentifier(LocatorIF subject_identifier)
PUBLIC: Adds the given subject identifier to the set of subject identifiers for this topic. |
void |
addSubjectLocator(LocatorIF subject_locator)
PUBLIC: Adds the given subject locator to the set of subject locators for this topic. |
void |
addType(TopicIF type)
PUBLIC: Adds a type to this topic. |
Collection<AssociationIF> |
getAssociations()
PUBLIC: Gets the associations that have roles played by this topic. |
Collection<AssociationIF> |
getAssociationsByType(TopicIF type)
PUBLIC: Gets the associations that have roles played by this topic, where the association is of specified type. |
Collection<OccurrenceIF> |
getOccurrences()
PUBLIC: Gets the occurrences of this topic. |
Collection<OccurrenceIF> |
getOccurrencesByType(TopicIF type)
PUBLIC: Gets the occurrences of this topic with a specified type. |
ReifiableIF |
getReified()
PUBLIC: Returns the topic map object that this topic reifies. |
Collection<AssociationRoleIF> |
getRoles()
PUBLIC: Gets the association roles played by this topic. |
Collection<AssociationRoleIF> |
getRolesByType(TopicIF roletype)
PUBLIC: Gets the association roles of the specifed type played by this topic. |
Collection<AssociationRoleIF> |
getRolesByType(TopicIF roletype,
TopicIF assoc_type)
PUBLIC: Gets the association roles of the specifed type played by this topic. |
Collection<LocatorIF> |
getSubjectIdentifiers()
PUBLIC: Gets the subject identitifers of this topic. |
Collection<LocatorIF> |
getSubjectLocators()
PUBLIC: Gets the subject locators of this topic. |
Collection<TopicNameIF> |
getTopicNames()
PUBLIC: Gets the names of this topic. |
Collection<TopicNameIF> |
getTopicNamesByType(TopicIF type)
PUBLIC: Gets the topic names of this topic with a specified type. |
Collection<TopicIF> |
getTypes()
PUBLIC: Gets the types that this topic is an instance of. |
void |
merge(TopicIF topic)
EXPERIMENTAL: Merges the characteristics of one topic into another topic. |
void |
removeSubjectIdentifier(LocatorIF subject_identifier)
PUBLIC: Removes the given subject identifier from the set of subject identifiers for this topic. |
void |
removeSubjectLocator(LocatorIF subject_locator)
PUBLIC: Removes the given subject locator from the set of subject locators for this topic. |
void |
removeType(TopicIF type)
PUBLIC: Removes a type from this topic. |
| Methods inherited from interface net.ontopia.topicmaps.core.TMObjectIF |
|---|
addItemIdentifier, getItemIdentifiers, getObjectId, getTopicMap, isReadOnly, remove, removeItemIdentifier |
| Field Detail |
|---|
static final String EVENT_ADDED
static final String EVENT_MODIFIED
static final String EVENT_REMOVED
static final String EVENT_ADD_TYPE
static final String EVENT_REMOVE_TYPE
static final String EVENT_ADD_SUBJECTLOCATOR
static final String EVENT_REMOVE_SUBJECTLOCATOR
static final String EVENT_ADD_SUBJECTIDENTIFIER
static final String EVENT_REMOVE_SUBJECTIDENTIFIER
static final String EVENT_ADD_TOPICNAME
static final String EVENT_REMOVE_TOPICNAME
static final String EVENT_ADD_OCCURRENCE
static final String EVENT_REMOVE_OCCURRENCE
| Method Detail |
|---|
Collection<LocatorIF> getSubjectLocators()
void addSubjectLocator(LocatorIF subject_locator) throws ConstraintViolationException
subject_locator
- A locator for the subject locator to be added;
an object implementing LocatorIF.
ConstraintViolationException
- Thrown if the topic map
already has a topic with this subject locator.void removeSubjectLocator(LocatorIF subject_locator)
subject_locator
- A locator for the subject locator to be removed;
an object implementing LocatorIF.Collection<LocatorIF> getSubjectIdentifiers()
void addSubjectIdentifier(LocatorIF subject_identifier) throws ConstraintViolationException
subject_identifier
- A locator for the subject identifier to be added;
an object implementing LocatorIF.
ConstraintViolationException
- Thrown if the topic map
already has a topic with this addressable subject.void removeSubjectIdentifier(LocatorIF subject_identifier)
subject_identifier
- A locator for the subject identifier to be removed;
an object implementing LocatorIF.Collection<TopicIF> getTypes()
void addType(TopicIF type)
type
- The additional type; an object implementing TopicIF.void removeType(TopicIF type)
type
- The type to be removed; an object implementing TopicIF.Collection<TopicNameIF> getTopicNames()
Collection<TopicNameIF> getTopicNamesByType(TopicIF type)
Collection<OccurrenceIF> getOccurrences()
Collection<OccurrenceIF> getOccurrencesByType(TopicIF type)
Collection<AssociationRoleIF> getRoles()
Collection<AssociationRoleIF> getRolesByType(TopicIF roletype)
Collection<AssociationRoleIF> getRolesByType(TopicIF roletype, TopicIF assoc_type)
Collection<AssociationIF> getAssociations()
Collection<AssociationIF> getAssociationsByType(TopicIF type)
void merge(TopicIF topic)
topic
- topicIF; the source topic. This is empty after the
operation and is removed from the topic map.
throws
- ConstraintViolationException if the two topics
have different values for the 'subject' property, since if they
do they cannot represent the same subject. If this exception is
thrown both topics remain untouched.ReifiableIF getReified()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


A Word Ladder is a sequence of words that each differ from the previous word by replacing some letters in that word. Word ladders can only be found between words of the same length.
Enter two words below and click the "GO!" button
Enjoy!


'Happy, now it's time' - Arsenal fans delighted after Luis Enrique makes Spain decision
Luis Enrique has rejoined Spain as head coach
by Andy HaLuis Enrique has been confirmed as the new Spain coach ahead of Euro 2020, after making a surprise return to the role.
Enrique stepped down in June to take care of his daughter Xana, who passed away in September, and Robert Moreno was handed the job.
But ahead of the European Championship next summer, Spain have moved to bring back the former Barcelona coach after a five-month absence.
Speaking at a press conference, RFEF president Luis Rubiales said: "Today we can confirm that Luis Enrique is returning to his job.
"It was clear that in the moment that Luis Enrique felt strong to return, the door was always open for him. I have always said that, and have always been honest, nobody can feel tricked.
"We want to thank Robert Moreno for his work, he did very well, and we are very happy with what he did. But I repeat that Robert Moreno told us he'd spoken with Luis Enrique, who had told him he wanted to return. We found out through Moreno that Enrique wanted back.
"We knew Luis Enrique wanted to return but Molina and I decided not to say anything until after qualification phase was done."
Enrique had been linked with the Arsenal job, with reports claiming the Spaniard was a potential contender to replace Unai Emery, should the Gunners head coach lose his job.
It was reported that Arsenal head of football Raul Sanllehi had previously sounded out Enrique, with the former Barca boss originally wanted to replace Arsene Wenger in 2018.
However, some Arsenal fans took to social media after the announcement, with many pleased that Enrique would not be appointed at the Emirates.


class WIN32OLE_RECORD
WIN32OLE_RECORD
objects represents VT_RECORD OLE variant.
Win32OLE returns WIN32OLE_RECORD object
if the result value of invoking OLE methods.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure Book <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Structure Public Function getBook() As Book Dim book As New Book book.title = "The Ruby Book" book.cost = 20 Return book End Function End Class
then, you can retrieve getBook return value from the following Ruby script:
require 'win32ole' obj = WIN32OLE.new('ComServer.ComClass') book = obj.getBook book.class # => WIN32OLE_RECORD book.title # => "The Ruby Book" book.cost # => 20
Public Class Methods
Returns WIN32OLE_RECORD object. The first argument is struct name (String or Symbol). The second parameter obj should be WIN32OLE object or WIN32OLE_TYPELIB object. If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure Book <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Structure End Class
then, you can create WIN32OLE_RECORD object is as following:
require 'win32ole' obj = WIN32OLE.new('ComServer.ComClass') book1 = WIN32OLE_RECORD.new('Book', obj) # => WIN32OLE_RECORD object tlib = obj.ole_typelib book2 = WIN32OLE_RECORD.new('Book', tlib) # => WIN32OLE_RECORD object
static VALUE folerecord_initialize(VALUE self, VALUE typename, VALUE oleobj) { HRESULT hr; ITypeLib *pTypeLib = NULL; IRecordInfo *pri = NULL; if (!RB_TYPE_P(typename, T_STRING) && !RB_TYPE_P(typename, T_SYMBOL)) { rb_raise(rb_eArgError, "1st argument should be String or Symbol"); } if (RB_TYPE_P(typename, T_SYMBOL)) { typename = rb_sym2str(typename); } hr = S_OK; if(rb_obj_is_kind_of(oleobj, cWIN32OLE)) { hr = typelib_from_val(oleobj, &pTypeLib); } else if (rb_obj_is_kind_of(oleobj, cWIN32OLE_TYPELIB)) { pTypeLib = itypelib(oleobj); OLE_ADDREF(pTypeLib); if (pTypeLib) { hr = S_OK; } else { hr = E_FAIL; } } else { rb_raise(rb_eArgError, "2nd argument should be WIN32OLE object or WIN32OLE_TYPELIB object"); } if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "fail to query ITypeLib interface"); } hr = recordinfo_from_itypelib(pTypeLib, typename, &pri); OLE_RELEASE(pTypeLib); if (FAILED(hr)) { ole_raise(hr, eWIN32OLERuntimeError, "fail to query IRecordInfo interface for `%s'", StringValuePtr(typename)); } olerecord_set_ivar(self, pri, NULL); return self; }
Public Instance Methods
Returns the OLE struct name and member name and the value of member
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Class
then
srver = WIN32OLE.new('ComServer.ComClass') obj = WIN32OLE_RECORD.new('Book', server) obj.inspect # => <WIN32OLE_RECORD(ComClass) {"title" => nil, "cost" => nil}>
static VALUE folerecord_inspect(VALUE self) { VALUE tname; VALUE field; tname = folerecord_typename(self); if (tname == Qnil) { tname = rb_inspect(tname); } field = rb_inspect(folerecord_to_h(self)); return rb_sprintf("#<WIN32OLE_RECORD(%"PRIsVALUE") %"PRIsVALUE">", tname, field); }
Returns value specified by the member name of VT_RECORD OLE variable. Or sets value specified by the member name of VT_RECORD OLE variable. If the member name is not correct, KeyError exception is raised.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure Book <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Structure End Class
Then getting/setting value from Ruby is as the following:
obj = WIN32OLE.new('ComServer.ComClass') book = WIN32OLE_RECORD.new('Book', obj) book.title # => nil ( book.method_missing(:title) is invoked. ) book.title = "Ruby" # ( book.method_missing(:title=, "Ruby") is invoked. )
static VALUE folerecord_method_missing(int argc, VALUE *argv, VALUE self) { VALUE name; rb_check_arity(argc, 1, 2); name = rb_sym2str(argv[0]); #if SIZEOF_SIZE_T > SIZEOF_LONG { size_t n = strlen(StringValueCStr(name)); if (n >= LONG_MAX) { rb_raise(rb_eRuntimeError, "too long member name"); } } #endif if (argc == 1) { return olerecord_ivar_get(self, name); } else if (argc == 2) { return olerecord_ivar_set(self, name, argv[1]); } return Qnil; }
Returns value specified by the member name of VT_RECORD OLE object. If the member name is not correct, KeyError exception is raised. If you can't access member variable of VT_RECORD OLE object directly, use this method.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure ComObject Public object_id As Ineger End Structure End Class
and Ruby Object class has title attribute:
then accessing object_id of ComObject from Ruby is as the following:
srver = WIN32OLE.new('ComServer.ComClass') obj = WIN32OLE_RECORD.new('ComObject', server) # obj.object_id returns Ruby Object#object_id obj.ole_instance_variable_get(:object_id) # => nil
static VALUE folerecord_ole_instance_variable_get(VALUE self, VALUE name) { VALUE sname; if(!RB_TYPE_P(name, T_STRING) && !RB_TYPE_P(name, T_SYMBOL)) { rb_raise(rb_eTypeError, "wrong argument type (expected String or Symbol)"); } sname = name; if (RB_TYPE_P(name, T_SYMBOL)) { sname = rb_sym2str(name); } return olerecord_ivar_get(self, sname); }
Sets value specified by the member name of VT_RECORD OLE object. If the member name is not correct, KeyError exception is raised. If you can't set value of member of VT_RECORD OLE object directly, use this method.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Class
then setting value of the `title' member is as following:
srver = WIN32OLE.new('ComServer.ComClass') obj = WIN32OLE_RECORD.new('Book', server) obj.ole_instance_variable_set(:title, "The Ruby Book")
static VALUE folerecord_ole_instance_variable_set(VALUE self, VALUE name, VALUE val) { VALUE sname; if(!RB_TYPE_P(name, T_STRING) && !RB_TYPE_P(name, T_SYMBOL)) { rb_raise(rb_eTypeError, "wrong argument type (expected String or Symbol)"); } sname = name; if (RB_TYPE_P(name, T_SYMBOL)) { sname = rb_sym2str(name); } return olerecord_ivar_set(self, sname, val); }
Returns Ruby Hash object which represents VT_RECORD variable. The keys of Hash object are member names of VT_RECORD OLE variable and the values of Hash object are values of VT_RECORD OLE variable.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure Book <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Structure Public Function getBook() As Book Dim book As New Book book.title = "The Ruby Book" book.cost = 20 Return book End Function End Class
then, the result of #to_h is the following:
require 'win32ole' obj = WIN32OLE.new('ComServer.ComClass') book = obj.getBook book.to_h # => {"title"=>"The Ruby Book", "cost"=>20}
static VALUE folerecord_to_h(VALUE self) { return rb_ivar_get(self, rb_intern("fields")); }
Returns the type name of VT_RECORD OLE variable.
If COM server in VB.NET ComServer project is the following:
Imports System.Runtime.InteropServices Public Class ComClass Public Structure Book <MarshalAs(UnmanagedType.BStr)> _ Public title As String Public cost As Integer End Structure Public Function getBook() As Book Dim book As New Book book.title = "The Ruby Book" book.cost = 20 Return book End Function End Class
then, the result of #typename is the following:
require 'win32ole' obj = WIN32OLE.new('ComServer.ComClass') book = obj.getBook book.typename # => "Book"
static VALUE folerecord_typename(VALUE self) { return rb_ivar_get(self, rb_intern("typename")); }


About
The use of social media analytics in RIS3 can offer simple indicators for monitoring the RIS3 process and implement cross-regional comparative analysis by using data coming from social media sites, such as Twitter, Facebook, Instagram and LinkedIn. This application uses data coming only from Twitter, since Twitter allows the potential user to retrieve data from other accounts as well. Using the knowledge extracted from these data sources, the RIS3 can be improved by:
- integrating valuable stakeholders’ insights, opinions and feedback
- stimulating collaboration
- supporting evidence-based decision making processes by taking public opinion into account
Social media analytics can also help increase transparency and generate higher public participation rates than other conventional e-government applications. Moreover, it can play an even greater role in strengthening and widening the participation of and interaction with citizens. Finally, in the RIS3 context, social media analytics can help articulate the collaborative visioning process and better legitimate the selection of specific scenarios emerging during the strategy formulation
The logical steps of the application, based on its methodological description are:
- Step 1. Choose whether you want to get information for the performance of a region's Twitter account or compare two region accounts
- Step 2. In the first case, choose your region of interest and get a number of performance indicators
- Step 3. Use these indicators to identify strengths and weaknesses, possible trends and user acceptability
- Step 4. In the second case, compare two regions, identify the strengths of each one and possibly adopt a similar online behavior


Why GitHub?
Features
Code Review
Project Management
Integrations
Actions
Packages
Security
Team Managements
Hosting
Custom Stories
Security
Team
Enterprise
Explore
Explore GitHub
Learn & contribute
Topics
Collections
Trending
Learning Lab
Open source guides
Connect with others
Events
Community forum
GitHub Education
Marketing
Pricing
Plans
Compare plans
Contact Sales
Nonprofit
Education
Sign in
Sign up


Sowmya Vajjala, Bodhisattwa Majumder, Anuj Gupta, Harshit Surana
Endorsed by Zachary Lipton, Sebastian Ruder & Marc Najork
Foreword by Julian McAuley
Read the testimonialsThis book is your guide to build, iterate and scale NLP systems and to tailor them for various industry verticals
Consider the task of building a chatbot or text classification system at your organization. In the beginning there may be little or no data to work with. At this point a basic solution using rule based systems or traditional machine learning will be apt. As you accumulate more data, more sophisticated ML techniques (which are often data intensive) can be used including deep learning. At each step of this journey there are dozens of alternative approaches one can take. This book will help you navigate this maze of options.
You will also learn to adapt your solutions for different industry verticals like healthcare, social media and retail. Moreover, you will learn about specific caveats you will encounter in each. You will learn how to analyze health records, detect fake news, extract attributes from e-commerce products and much more.
Please note that readers pursuing cutting-edge research in NLP may find some sections of the book rudimentary as we do not cover in-depth theoretical and technical details related to NLP concepts. Moreover, we expect the readers to follow the respective documentations for various frameworks we use in our code examples.
Practical NLP is used as a reference book or a textbook at above-noted universities.
Looking for instructor resources ? Please visit this page.
Through the course of the book, we will guide you through the process of building real-world NLP solutions embedded in larger product setups via a compendium of over 450 references. With this book, you’ll:
Slides & talks for events will be updated soon
We are aware that some of the color figures are not legible in black and white in the paperback versions. So we have worked with O'Reilly Media to release higher-quality color versions of all images. They can be viewed for each chapter in our repository as well as download from practical-nlp-figures.
The errata of the book is accessible here. We thank our diligent readers who pointed out these points which we overlooked in our first edition. You can also submit any requests for techical or grammatical changes here.
The accompanying code for our book is publicly available in the repository. This repository is constantly evolving and under-review as we are updating the code with additional information going beyond what book covers.


|
As we make some changes to build a better Meetup and bring more people together around the world, we need to update our Terms of Service and Privacy Policy. We've also created a new Cookie Policy. Since we know you're busy, we've summarized the key changes below and created a new Policy Center to make these documents easier to find.
Terms of Service
| • |
We have added an easy-to-understand overview, section summaries, and practical tips. |
| • |
We have updated aspects of how and where you can bring a claim against us, including important information about informal dispute resolution, mandatory arbitration, and a class action waiver. |
Privacy Policy
| • |
We have added details about how we collect information about you. |
| • |
We let you know how we use information about you to operate our service, and for other uses, including advertising. |
| • |
We have explained how we share information about you with our service providers. |
| • |
We have provided more information about your choices related to how we communicate with you and how we use information about you. |
Cookie Policy
| • |
We have described how and why we use cookies and similar technologies. |
| • |
We have elaborated on how you may be able to control or opt out of some of these technologies. |
Click here to learn more about Meetup’s Terms and Policies.
To continue using our services you must agree to our updated Terms of Service, Privacy Policy, and Cookie Policy.
Thank you for being a part of the Meetup community.
|


Table
Tables are a nice way to organize a lot of data. We provide a few utility classes to help you style your table as easily as possible. In addition, to improve mobile experience, all tables on mobile-screen widths are centered automatically.
| Name | Item | Price |
|---|---|---|
| Alvin | Eclair | $0.87 |
| Alan | Jellybean | $3.76 |
| Jonathan | Lollipop | $7.00 |
| Shannon | KitKat | $9.99 |

Name
Item
Price

Alvin
Eclair
$0.87

Alan
Jellybean
$3.76

Jonathan
Lollipop
$7.00

Striped Table
add class="striped"
to the table tag for a striped table
| Name | Item | Price |
|---|---|---|
| Alvin | Eclair | $0.87 |
| Alan | Jellybean | $3.76 |
| Jonathan | Lollipop | $7.00 |
| Shannon | KitKat | $9.99 |
Highlight Table
add class="highlight"
to the table tag for a highlight table
| Name | Item | Price |
|---|---|---|
| Alvin | Eclair | $0.87 |
| Alan | Jellybean | $3.76 |
| Jonathan | Lollipop | $7.00 |
| Shannon | KitKat | $9.99 |
Centered Table
add class="centered"
to the table tag to center align all the text in the table.
| Name | Item | Price |
|---|---|---|
| Alvin | Eclair | $0.87 |
| Alan | Jellybean | $3.76 |
| Jonathan | Lollipop | $7.00 |
| Shannon | KitKat | $9.99 |
Responsive Table
add class="responsive"
to the table tag to make the table horizontally scrollable on smaller screen widths.
| Name | Item | Price |
|---|---|---|
| Alvin | Eclair | $0.87 |
| Alan | Jellybean | $3.76 |
| Jonathan | Lollipop | $7.00 |
| Shannon | KitKat | $9.99 |
Issues
Bug or features request? Open an Issue


Sign In
My Thumbs
Feedback
Loading your thumbs... please wait.
Please
login or register
to see your thumbs.
No issues found.
Email address
Message
Send Feedback to Bountysource Team
Thanks for the feedback!


A collection of implementations of classical and novel
algorithms for weighted sampling without replacement.
| Version: |
1.1 |
| Depends: |
R (≥ 3.0.2) |
| Imports: |
logging (≥ 0.4-13), Rcpp |
| LinkingTo: |
Rcpp (≥ 0.11.5) |
| Suggests: |
BatchExperiments, dplyr, ggplot2, import, kimisc (≥ 0.2-4), knitcitations, knitr, metap, microbenchmark, rmarkdown, roxygen2, rticles (≥ 0.1), sampling, testthat, tidyr, tikzDevice (≥ 0.9-1) |
| Published: |
2018-02-02 |
| Author: |
Kirill Müller [aut, cre] |
| Maintainer: |
Kirill Müller <krlmlr+r at mailbox.org> |
| BugReports: |
https://github.com/krlmlr/wrswoR/issues |
| License: |
GPL-3 |
| URL: |
http://krlmlr.github.io/wrswoR |
| NeedsCompilation: |
yes |
| Materials: |
README NEWS |
| CRAN checks: |
wrswoR results |


HELP
Instructions
This visualization framework aims to address current bottlenecks in the analysis of large sequence datasets (rRNA amplicons, metagenomes), helping researchers analyze high-throughput datasets more efficiently. Phich takes advantage of standard outputs from computational pipelines in order to bridge the gap between biological software (e.g. QIIME) and existing data visualization capabilities (harnessing the scalability of WebGL and HTML5 in a browser-based tool).
Phinch currently supports downstream analyses of .biom files ( Biological Observation Matrix, a JSON-formatted file type typically used to represent marker gene OTUs or metagenomic data). All sample metadata and taxonomy/ontology information MUST be embedded in the .biom file before being uploaded into Phinch.
In QIIME (version 1.7 or later), users can prepare the .biom file by executing the following commands:
First, construct an OTU table:
make_otu_table.py -i final_otu_map_mc2.txt -o otu_table_mc2_w_tax.biom -t rep_set_tax_assignments.txt
Where your input file (-i) is your OTU Map (defining clusters of raw sequences reads), and taxonomy file (-t) contains the taxonomy or gene ontology strings that correspond to each OTU.
Second, add your sample metadata to your .biom file:
add_metadata.py -i otu_table_mc2_w_tax.biom -o otu_table_mc2_w_tax_and_metadata.biom -m sample_metadata_mapping_file.txt
Where your input file (-i) is your .biom file from the previous step, and your mapping file (-m) is a tab-delimited file containing sample metadata (formatted according to these QIIME instructions).
After these two steps, you're ready to upload.
If you want to visualize biological data currently formatted as a tab-delimited text file (e.g. the style of OTU tables produced by older versions of QIIME), please refer to this documentation for conversion instructions. Phinch supports both "sparse" and "dense" BIOM formats (although sparse .biom files are highly recommended, since the file size is much smaller).
Some important notes on metadata
In order to be properly detected, all date/time metadata must be standardized according to MIxS standardized format (more information at the Genomic Standards Consortium wiki), and entered into one column in your original sample metadata mapping file, as follows:
[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]-[Z]
For example, metadata for a sample collected at 2:30pm EST on May 4, 2007 would be entered as: 2007-04-05T14:30:00-05:00
Similarly, any geographic coordinates or GPS data must be entered as decimal degrees (the format used by GoogleMaps, e.g. -90.017926). We recommend using separate columns labeled “Latitude” and “Longitude” in your original sample metadata mapping file, to ensure that GPS metadata is correctly detected.
To label your samples with human-readable IDs in the visualizations, include a column in your metadata mapping file with the header labelled as “phinch”. These IDs will be pulled through into the visualizations to populate graph axes. If this column is not included, an arbitrary numerical ID will be assigned to each sample.
FILTER DATA
Chrome Browser Recommended! Your browser does not support the Phinch framework!
DATES
NUMERIC RANGE
GROUPABLE
DESCRIPTIVE


Statistics¶
General¶
The cluster manager has a statistics tree rooted at cluster_manager. with the following
statistics. Any :
character in the stats name is replaced with _
. Stats include
all clusters managed by the cluster manager, including both clusters used for data plane
upstreams and control plane xDS clusters.
| Name | Type | Description |
|---|---|---|
| cluster_added | Counter | Total clusters added (either via static config or CDS) |
| cluster_modified | Counter | Total clusters modified (via CDS) |
| cluster_removed | Counter | Total clusters removed (via CDS) |
| cluster_updated | Counter | Total cluster updates |
| cluster_updated_via_merge | Counter | Total cluster updates applied as merged updates |
| update_merge_cancelled | Counter | Total merged updates that got cancelled and delivered early |
| update_out_of_merge_window | Counter | Total updates which arrived out of a merge window |
| active_clusters | Gauge | Number of currently active (warmed) clusters |
| warming_clusters | Gauge | Number of currently warming (not active) clusters |
Every cluster has a statistics tree rooted at cluster.<name>. with the following statistics:
| Name | Type | Description |
|---|---|---|
| upstream_cx_total | Counter | Total connections |
| upstream_cx_active | Gauge | Total active connections |
| upstream_cx_http1_total | Counter | Total HTTP/1.1 connections |
| upstream_cx_http2_total | Counter | Total HTTP/2 connections |
| upstream_cx_connect_fail | Counter | Total connection failures |
| upstream_cx_connect_timeout | Counter | Total connection connect timeouts |
| upstream_cx_idle_timeout | Counter | Total connection idle timeouts |
| upstream_cx_connect_attempts_exceeded | Counter | Total consecutive connection failures exceeding configured connection attempts |
| upstream_cx_overflow | Counter | Total times that the cluster’s connection circuit breaker overflowed |
| upstream_cx_connect_ms | Histogram | Connection establishment milliseconds |
| upstream_cx_length_ms | Histogram | Connection length milliseconds |
| upstream_cx_destroy | Counter | Total destroyed connections |
| upstream_cx_destroy_local | Counter | Total connections destroyed locally |
| upstream_cx_destroy_remote | Counter | Total connections destroyed remotely |
| upstream_cx_destroy_with_active_rq | Counter | Total connections destroyed with 1+ active request |
| upstream_cx_destroy_local_with_active_rq | Counter | Total connections destroyed locally with 1+ active request |
| upstream_cx_destroy_remote_with_active_rq | Counter | Total connections destroyed remotely with 1+ active request |
| upstream_cx_close_notify | Counter | Total connections closed via HTTP/1.1 connection close header or HTTP/2 GOAWAY |
| upstream_cx_rx_bytes_total | Counter | Total received connection bytes |
| upstream_cx_rx_bytes_buffered | Gauge | Received connection bytes currently buffered |
| upstream_cx_tx_bytes_total | Counter | Total sent connection bytes |
| upstream_cx_tx_bytes_buffered | Gauge | Send connection bytes currently buffered |
| upstream_cx_protocol_error | Counter | Total connection protocol errors |
| upstream_cx_max_requests | Counter | Total connections closed due to maximum requests |
| upstream_cx_none_healthy | Counter | Total times connection not established due to no healthy hosts |
| upstream_rq_total | Counter | Total requests |
| upstream_rq_active | Gauge | Total active requests |
| upstream_rq_pending_total | Counter | Total requests pending a connection pool connection |
| upstream_rq_pending_overflow | Counter | Total requests that overflowed connection pool circuit breaking and were failed |
| upstream_rq_pending_failure_eject | Counter | Total requests that were failed due to a connection pool connection failure |
| upstream_rq_pending_active | Gauge | Total active requests pending a connection pool connection |
| upstream_rq_cancelled | Counter | Total requests cancelled before obtaining a connection pool connection |
| upstream_rq_maintenance_mode | Counter | Total requests that resulted in an immediate 503 due to maintenance mode |
| upstream_rq_timeout | Counter | Total requests that timed out waiting for a response |
| upstream_rq_per_try_timeout | Counter | Total requests that hit the per try timeout |
| upstream_rq_rx_reset | Counter | Total requests that were reset remotely |
| upstream_rq_tx_reset | Counter | Total requests that were reset locally |
| upstream_rq_retry | Counter | Total request retries |
| upstream_rq_retry_success | Counter | Total request retry successes |
| upstream_rq_retry_overflow | Counter | Total requests not retried due to circuit breaking |
| upstream_flow_control_paused_reading_total | Counter | Total number of times flow control paused reading from upstream |
| upstream_flow_control_resumed_reading_total | Counter | Total number of times flow control resumed reading from upstream |
| upstream_flow_control_backed_up_total | Counter | Total number of times the upstream connection backed up and paused reads from downstream |
| upstream_flow_control_drained_total | Counter | Total number of times the upstream connection drained and resumed reads from downstream |
| upstream_internal_redirect_failed_total | Counter | Total number of times failed internal redirects resulted in redirects being passed downstream. |
| upstream_internal_redirect_succeed_total | Counter | Total number of times internal redirects resulted in a second upstream request. |
| membership_change | Counter | Total cluster membership changes |
| membership_healthy | Gauge | Current cluster healthy total (inclusive of both health checking and outlier detection) |
| membership_degraded | Gauge | Current cluster degraded total |
| membership_total | Gauge | Current cluster membership total |
| retry_or_shadow_abandoned | Counter | Total number of times shadowing or retry buffering was canceled due to buffer limits |
| config_reload | Counter | Total API fetches that resulted in a config reload due to a different config |
| update_attempt | Counter | Total cluster membership update attempts |
| update_success | Counter | Total cluster membership update successes |
| update_failure | Counter | Total cluster membership update failures |
| update_empty | Counter | Total cluster membership updates ending with empty cluster load assignment and continuing with previous config |
| update_no_rebuild | Counter | Total successful cluster membership updates that didn’t result in any cluster load balancing structure rebuilds |
| version | Gauge | Hash of the contents from the last successful API fetch |
| max_host_weight | Gauge | Maximum weight of any host in the cluster |
| bind_errors | Counter | Total errors binding the socket to the configured source address |
Health check statistics¶
If health check is configured, the cluster has an additional statistics tree rooted at cluster.<name>.health_check. with the following statistics:
| Name | Type | Description |
|---|---|---|
| attempt | Counter | Number of health checks |
| success | Counter | Number of successful health checks |
| failure | Counter | Number of immediately failed health checks (e.g. HTTP 503) as well as network failures |
| passive_failure | Counter | Number of health check failures due to passive events (e.g. x-envoy-immediate-health-check-fail) |
| network_failure | Counter | Number of health check failures due to network error |
| verify_cluster | Counter | Number of health checks that attempted cluster name verification |
| healthy | Gauge | Number of healthy members |
Outlier detection statistics¶
If outlier detection is configured for a cluster, statistics will be rooted at cluster.<name>.outlier_detection. and contain the following:
| Name | Type | Description |
|---|---|---|
| ejections_enforced_total | Counter | Number of enforced ejections due to any outlier type |
| ejections_active | Gauge | Number of currently ejected hosts |
| ejections_overflow | Counter | Number of ejections aborted due to the max ejection % |
| ejections_enforced_consecutive_5xx | Counter | Number of enforced consecutive 5xx ejections |
| ejections_detected_consecutive_5xx | Counter | Number of detected consecutive 5xx ejections (even if unenforced) |
| ejections_enforced_success_rate | Counter | Number of enforced success rate outlier ejections |
| ejections_detected_success_rate | Counter | Number of detected success rate outlier ejections (even if unenforced) |
| ejections_enforced_consecutive_gateway_failure | Counter | Number of enforced consecutive gateway failure ejections |
| ejections_detected_consecutive_gateway_failure | Counter | Number of detected consecutive gateway failure ejections (even if unenforced) |
| ejections_total | Counter | Deprecated. Number of ejections due to any outlier type (even if unenforced) |
| ejections_consecutive_5xx | Counter | Deprecated. Number of consecutive 5xx ejections (even if unenforced) |
Circuit breakers statistics¶
Circuit breakers statistics will be rooted at cluster.<name>.circuit_breakers.<priority>. and contain the following:
| Name | Type | Description |
|---|---|---|
| cx_open | Gauge | Whether the connection circuit breaker is closed (0) or open (1) |
| rq_pending_open | Gauge | Whether the pending requests circuit breaker is closed (0) or open (1) |
| rq_open | Gauge | Whether the requests circuit breaker is closed (0) or open (1) |
| rq_retry_open | Gauge | Whether the retry circuit breaker is closed (0) or open (1) |
Dynamic HTTP statistics¶
If HTTP is used, dynamic HTTP response code statistics are also available. These are emitted by various internal systems as well as some filters such as the router filter and rate limit filter. They are rooted at cluster.<name>. and contain the following statistics:
| Name | Type | Description |
|---|---|---|
| upstream_rq_completed | Counter | Total upstream requests completed |
| upstream_rq_<*xx> | Counter | Aggregate HTTP response codes (e.g., 2xx, 3xx, etc.) |
| upstream_rq_<*> | Counter | Specific HTTP response codes (e.g., 201, 302, etc.) |
| upstream_rq_time | Histogram | Request time milliseconds |
| canary.upstream_rq_completed | Counter | Total upstream canary requests completed |
| canary.upstream_rq_<*xx> | Counter | Upstream canary aggregate HTTP response codes |
| canary.upstream_rq_<*> | Counter | Upstream canary specific HTTP response codes |
| canary.upstream_rq_time | Histogram | Upstream canary request time milliseconds |
| internal.upstream_rq_completed | Counter | Total internal origin requests completed |
| internal.upstream_rq_<*xx> | Counter | Internal origin aggregate HTTP response codes |
| internal.upstream_rq_<*> | Counter | Internal origin specific HTTP response codes |
| internal.upstream_rq_time | Histogram | Internal origin request time milliseconds |
| external.upstream_rq_completed | Counter | Total external origin requests completed |
| external.upstream_rq_<*xx> | Counter | External origin aggregate HTTP response codes |
| external.upstream_rq_<*> | Counter | External origin specific HTTP response codes |
| external.upstream_rq_time | Histogram | External origin request time milliseconds |
Alternate tree dynamic HTTP statistics¶
If alternate tree statistics are configured, they will be present in the cluster.<name>.<alt name>. namespace. The statistics produced are the same as documented in the dynamic HTTP statistics section above.
Per service zone dynamic HTTP statistics¶
If the service zone is available for the local service (via --service-zone
)
and the upstream cluster,
Envoy will track the following statistics in cluster.<name>.zone.<from_zone>.<to_zone>. namespace.
| Name | Type | Description |
|---|---|---|
| upstream_rq_<*xx> | Counter | Aggregate HTTP response codes (e.g., 2xx, 3xx, etc.) |
| upstream_rq_<*> | Counter | Specific HTTP response codes (e.g., 201, 302, etc.) |
| upstream_rq_time | Histogram | Request time milliseconds |
Load balancer statistics¶
Statistics for monitoring load balancer decisions. Stats are rooted at cluster.<name>. and contain the following statistics:
| Name | Type | Description |
|---|---|---|
| lb_recalculate_zone_structures | Counter | The number of times locality aware routing structures are regenerated for fast decisions on upstream locality selection |
| lb_healthy_panic | Counter | Total requests load balanced with the load balancer in panic mode |
| lb_zone_cluster_too_small | Counter | No zone aware routing because of small upstream cluster size |
| lb_zone_routing_all_directly | Counter | Sending all requests directly to the same zone |
| lb_zone_routing_sampled | Counter | Sending some requests to the same zone |
| lb_zone_routing_cross_zone | Counter | Zone aware routing mode but have to send cross zone |
| lb_local_cluster_not_ok | Counter | Local host set is not set or it is panic mode for local cluster |
| lb_zone_number_differs | Counter | Number of zones in local and upstream cluster different |
| lb_zone_no_capacity_left | Counter | Total number of times ended with random zone selection due to rounding error |
| original_dst_host_invalid | Counter | Total number of invalid hosts passed to original destination load balancer |
Load balancer subset statistics¶
Statistics for monitoring load balancer subset <arch_overview_load_balancer_subsets> decisions. Stats are rooted at cluster.<name>. and contain the following statistics:
| Name | Type | Description |
|---|---|---|
| lb_subsets_active | Gauge | Number of currently available subsets |
| lb_subsets_created | Counter | Number of subsets created |
| lb_subsets_removed | Counter | Number of subsets removed due to no hosts |
| lb_subsets_selected | Counter | Number of times any subset was selected for load balancing |
| lb_subsets_fallback | Counter | Number of times the fallback policy was invoked |


Dog goes woofy. Did you said squirrel?
You can't hold a dog down without staying down with him!
That's one small step for a dog, one giant leap for giant


BANKA
SIGN UP
Banka is a light-weight core banking application that powers banking operations like account creation, customer deposit and withdrawals.
Log on to Banka
Forgotten Password?
A New User
Sign Up to enjoy Banka!


But, we recommend you start by creating a view at app/views/{view_path}. The view will be served up automatically without writing any back-end code! This pattern is called view-first development (you could also call it awesome).
app/views/{view_path}