Image Filter and Option Reference
Filter Reference
Convert GIF to PNG
This filter losslessly converts GIF images to PNG, a more recent image format
that can generally achieve higher compression than GIF. This filter only
converts single-frame GIFs, as PNG only supports single-frame images.
Animated GIFs can be converted to the WebP format using the
convert_to_webp_animated
filter.
- Apache:
ModPagespeedEnableFilters convert_gif_to_png
- Nginx:
pagespeed EnableFilters convert_gif_to_png;
Convert JPEG to progressive
This filter uses progressive format to encode large (more than 10KB) JPEG images. Progressive format generally yields better compression for large images, and permits incremental display by the browser.
- Apache:
ModPagespeedEnableFilters convert_jpeg_to_progressive
- Nginx:
pagespeed EnableFilters convert_jpeg_to_progressive;
Convert JPEG to WebP
This filter converts JPEG to lossily-encoded WebP format if the latter is supported by the browser (see list of browsers supporting WebP); otherwise, this filter is ignored.
With this filter enabled, GIF and PNG images can also be converted to
lossily-encoded WebP if the configuration allows them to be converted to JPEG
(i.e., if convert_gif_to_png
and convert_png_to_jpeg
are also enabled), and if PageSpeed determines that the images are not
sensitive to compression noise.
Note: Before <IP_ADDRESS>, if convert_to_webp_lossless
was enabled,
GIF and PNG images were converted to losslessly-encoded WebP even if they
could be converted to JPEG or lossily-encoded WebP.
- Apache:
ModPagespeedEnableFilters convert_jpeg_to_webp
- Nginx:
pagespeed EnableFilters convert_jpeg_to_webp;
Convert PNG to JPEG
This filter converts GIF and PNG images to JPEG if they have no transparent pixels and if PageSpeed determines that they are not sensitive to compression noise. The conversion is lossy but the optimized JPEG images are usually substantially smaller than the original.
Note: before <IP_ADDRESS> mod_pagespeed did not check whether the image was sensitive to compression noise and converted the image to JPEG as long as it did not have transparent pixels.
- Apache:
ModPagespeedEnableFilters convert_png_to_jpeg
- Nginx:
pagespeed EnableFilters convert_png_to_jpeg;
Convert to WebP animated
This filter converts animated GIF to animated WebP if the latter format is supported by the browser; otherwise, this filter is ignored. Check here for the advantages of animated WebP and a list of supporting browsers.
Note: New feature as of <IP_ADDRESS>
- Apache:
ModPagespeedEnableFilters convert_to_webp_animated
- Nginx:
pagespeed EnableFilters convert_to_webp_animated;
Convert to WebP lossless
This filter converts PNG and non-animated GIF images to losslessly-encoded WebP if PageSpeed determines that the images are sensitive to compression noise and if the latter format is supported by the browser (see list of browsers supporting WebP); otherwise, this filter is ignored.
- Apache:
ModPagespeedEnableFilters convert_to_webp_lossless
- Nginx:
pagespeed EnableFilters convert_to_webp_lossless;
Inline images
This filter replaces references to small images by converting them to inline
data:
URLs, eliminating the need to initiate new connections for
fetching the image data.
By default inline_images
injects JavaScript that
uses a beacon to report back to the server the
images that are visible in the client's initial viewport (above-the-fold).
It takes a few accesses of a page for the data to be reported back and
processed but eventually the above-the-fold images will be identified and
inlined, while below-the-fold images will not be inlined; until then all
small images will be inlined.
The use of beacons can be disabled using the
CriticalImagesBeaconEnabled option.
If they are disabled, inline_images
will not inject the
JavaScript and will revert to inlining small images.
- Apache:
ModPagespeedEnableFilters inline_images
- Nginx:
pagespeed EnableFilters inline_images;
Inline preview images
This filter replaces each image URL with an inline data:
URL of
reduced quality; then, after the page's onload event, loads the full-size
images. Inlining reduced-quality images makes the page render much faster.
As the full-size images load in later, the final experience is a fast page
load without loss of detail.
See Inline Preview Images
for more details.
Insert image dimensions
This filter adds width=
and height=
attributes to the

tags if they are missing. Values for the
width=
and height=
attributes are computed from the
image.
Note: This filter may cause stretching or shrinking distortion if you have CSS rules that modify an image's dimensions.
- Apache:
ModPagespeedEnableFilters insert_image_dimensions
- Nginx:
pagespeed EnableFilters insert_image_dimensions;
Recompress images
This is a filter group consisting of
convert_gif_to_png
, convert_jpeg_to_progressive
,
convert_jpeg_to_webp
, convert_png_to_jpeg
,
jpeg_subsampling
, recompress_jpeg
,
recompress_png
, recompress_webp
,
strip_image_color_profile
,
and strip_image_meta_data
.
Note: before <IP_ADDRESS> convert_png_to_jpeg
was not part of
recompress_images
and needed to be enabled separately.
- Apache:
ModPagespeedEnableFilters recompress_images
- Nginx:
pagespeed EnableFilters recompress_images;
Recompress JPEG
This filter recompresses JPEG images. Quality for the output image is the minimum of the original image and that specified in the configuration.
- Apache:
ModPagespeedEnableFilters recompress_jpeg
- Nginx:
pagespeed EnableFilters recompress_jpeg;
Recompress PNG
This filter recompresses PNG images.
- Apache:
ModPagespeedEnableFilters recompress_png
- Nginx:
pagespeed EnableFilters recompress_png;
Recompress WebP
This filter recompresses single-frame (non-animated) WebP images to the quality specified in the configuration.
- Apache:
ModPagespeedEnableFilters recompress_webp
- Nginx:
pagespeed EnableFilters recompress_webp;
Reduce JPEG subsampling
This filter uses 4:2:0 chroma subsampling for JPEG images, wherein hue and saturation have only 25% as many samples as brightness. Because human vision is less sensitive to hue and saturation than to brightness, this subsampling can significantly reduce image size with little effect on perception.
- Apache:
ModPagespeedEnableFilters jpeg_subsampling
- Nginx:
pagespeed EnableFilters jpeg_subsampling;
Resize images
This filter shrinks the dimensions of an image to the width=
or
height=
attribute specified in the
tag
or in the inline style=
attribute.
Note: This filter always strips color profiles and metadata. The resized image may also be recompressed or converted to a new format and quality based on your configuration.
- Apache:
ModPagespeedEnableFilters resize_images
- Nginx:
pagespeed EnableFilters resize_images;
Resize images to rendered dimensions
This filter shrinks images to their rendered dimensions on the web page.
Unlike resize_images
, it ignores any width
and
height
attributes specified for the images. If the same image
appears more than once on a page it is resized to the largest rendered
dimensions.
To report the rendered dimensions back to the server, this filter injects JavaScript code to your pages which beacon the sizes back. Your page needs to be visited several times before the server figures out the rendered dimensions. To use this filter, the CriticalImagesBeaconEnabled filter must be enabled (this is the default).
Note: If both resize_rendered_image_dimensions
and
resize_images
are enabled,
resize_rendered_image_dimensions
takes precedence.
Note: This filter always strips color profiles and metadata. The resized image may be recompressed or converted to a new format and quality based on your configuration.
- Apache:
ModPagespeedEnableFilters resize_rendered_image_dimensions
- Nginx:
pagespeed EnableFilters resize_rendered_image_dimensions;
Rewrite images
This is a filter group that includes inline_images
,
recompress_images
, convert_to_webp_lossless
,
and resize_images
.
- Apache:
ModPagespeedEnableFilters rewrite_images
- Nginx:
pagespeed EnableFilters rewrite_images;
Strip image color profile
This filter strips color profiles from images. The stripped images may also be recompressed or converted to a new format and quality based on your configuration.
Note: Image resizing or format conversion always removes color profiles.
- Apache:
ModPagespeedEnableFilters strip_image_color_profile
- Nginx:
pagespeed EnableFilters strip_image_color_profile;
Strip image metadata
This filter strips metadata, i.e., data which is not displayed, from images. The stripped images may also be recompressed or converted to a new format and quality based on your configuration.
Note: Image resizing or format conversion always removes metadata.
- Apache:
ModPagespeedEnableFilters strip_image_meta_data
- Nginx:
pagespeed EnableFilters strip_image_meta_data;
Option Reference
AllowVaryOn
This option controls the response headers PageSpeed may use when deciding
how to recompress images in
In-Place Resource Optimization mode.
PageSpeed uses only the specified headers to tailor the format and quality
to the client device and then emits a Vary
response header which
lists the headers it actually used. If you are using a CDN or caching proxy
in front of PageSpeed, it must support the specified headers so the optimized
images will be cached correctly in IPRO mode.
Valid values for this option are:
-
None
: This option offers the best caching but disables some of PageSpeed's image optimization features, including WebP transcoding. Auto
: This is equivalent to "Accept
,Save-Data
" when the request from your user has theVia
header (i.e., the request came through a proxy), or "User-Agent
,Save-Data
" otherwise.-
One or more headers from the following, separated by comma:
Accept
,Save-Data
,User-Agent
.
The default is Auto
.
When you allow PageSpeed to vary on User-Agent
, either directly
or via Auto
, PageSpeed tries all image formats and all image
qualities that you have enabled. For example, PageSpeed uses all modes of WebP
and qualities for small screens if they apply. However, because of the huge
number of user-agents, allowing vary on User-Agent
can take up
a huge amount of disk space in a cache. Therefore, PageSpeed does not
recommend using vary on User-Agent
if you use a caching proxy
or CDN.
On the other hand, when you allow PageSpeed to vary on Accept
,
either directly or via Auto
, PageSpeed will consider all image
formats supported by the Accept
header, e.g., the lossy mode of
WebP. The Accept
header does not indicate whether the device is a
small screen, so the qualities for small screens will not be used.
The Accept
header is not enough to conclude that browser supports
the lossless or animated mode of WebP, so they are not used.
When you allow PageSpeed to vary on Save-Data
, PageSpeed uses the
image qualities that you set for the Save-Data
mode if the
request has the Save-Data
header.
Note: new feature as of <IP_ADDRESS>
- Apache:
ModPagespeedAllowVaryOn headers
- Nginx:
pagespeed AllowVaryOn headers;
CssImageInlineMaxBytes
This option sets the maximum size in bytes of any image that will be inlined
into CSS. For inline CSS in HTML files, the value used is the smaller of
MaxBytes
or ImageInlineMaxBytes
. The default value
is 0.
- Apache:
ModPagespeedCssImageInlineMaxBytes MaxBytes
- Nginx:
pagespeed CssImageInlineMaxBytes MaxBytes;
ImageInlineMaxBytes
This option sets the maximum size in bytes of any image that will be inlined into an HTML file. The default value is 2048.
- Apache:
ModPagespeedImageInlineMaxBytes MaxBytes
- Nginx:
pagespeed ImageInlineMaxBytes MaxBytes;
ImageJpegNumProgressiveScans
This option sets how many scans (how many groups to divide image data into) are used for progressive JPEGs. More scans allows finer granular increase of display quality, but at the cost of more computation. The range is 1 to 10 and the default is 10.
- Apache:
ModPagespeedImageJpegNumProgressiveScans Scans
- Nginx:
pagespeed ImageJpegNumProgressiveScans Scans;
ImageJpegNumProgressiveScansForSmallScreens
This option overrides ImageJpegNumProgressiveScans
specifically
for mobile visitors.
- Apache:
ModPagespeedImageJpegNumProgressiveScansForSmallScreens Scans
- Nginx:
pagespeed ImageJpegNumProgressiveScansForSmallScreens Scans;
ImageLimitOptimizedPercent
PageSpeed only keeps optimized images whose size after recompression is less than the given percent of the original image size. For example, setting this to 95 will retain an optimized image only if it is at least 5% smaller than the original image it would replace. The default value is 100, meaning any savings at all will cause the optimized image to be used.
Note: Do not set this option to 0 to disable image optimization; disable
rewrite_images
or the related filters instead. If you set this
to 0 PageSpeed will still try to compress all your images, but will throw the
output away for showing insufficient compression gains.
- Apache:
ModPagespeedImageLimitOptimizedPercent Percent
- Nginx:
pagespeed ImageLimitOptimizedPercent Percent;
ImageLimitResizeAreaPercent
PageSpeed only attempts to resize images whose area in pixels after optimization is less than the given percent of the original image area. For example, setting this to 90 will only resize images if the image area shrinks by at least 10%. The default value is 100, meaning any shrinkage at all will cause an image to be resized.
Note: Do not set this option to 0 to disable image resizing, as that just adds
computational overhead during page load; disable the
resize_images
and
resize_rendered_image_dimensions
filters instead.
- Apache:
ModPagespeedImageLimitResizeAreaPercent Percent
- Nginx:
pagespeed ImageLimitResizeAreaPercent Percent;
ImageMaxRewritesAtOnce
This option sets the maximum number of images to optimize concurrently. The default value is 8.
To allow optimizing an unlimited number of images concurrently, set this
option to "-1". To stop optimizing images, instead disable
recompress_images
or the related filters.
Note: For backward compatibility, a value of "0" is treated equivalently to "-1", removing the restriction on the number of concurrent image optimizations PageSpeed will attempt.
- Apache:
ModPagespeedImageMaxRewritesAtOnce NumImages
- Nginx:
pagespeed ImageMaxRewritesAtOnce NumImages;
ImageResolutionLimitBytes
To avoid using too much memory, PageSpeed has a limit on the size of images it
will optimize. The limit is expressed in bytes of uncompressed image,
with a default of 32 MB. PageSpeed may need four bytes to represent each pixel,
so divide by four to compute how many pixels that is. This means with the
default settings the largest images PageSpeed will try to optimize are ones
with 8 million pixels (8MP). You can calculate the total number of pixels in
an image by multiplying its width and height. For example, a 2000x4000 image
is 8MP. If you have images that are larger than this limit, and you're
comfortable allowing PageSpeed to use the memory it needs to process them,
increase ImageResolutionLimitBytes
. For example, to allow
PageSpeed to process images up to 32 MP (4000x8000) you can set:
- Apache:
ModPagespeedImageResolutionLimitBytes 128000000
- Nginx:
pagespeed ImageResolutionLimitBytes 128000000;
convert -resize 8000000@\> input.jpg output.jpgIf
input.jpg
is larger than 8MP then this command will resize it
to just below 8MP while maintaining the aspect ratio. If the image is already
smaller than 8MP, convert
will leave it alone.
PageSpeed also has a limit on the
maximum on-disk size of resources it is willing to optimize, which as of
<IP_ADDRESS> defaults to 16MB. While ImageResolutionLimitBytes
is a
limit on the uncompressed size of images, PageSpeed will be completely bypassed
for any object, not just images, whose on-disk size is larger than
MaxCacheableContentLength
. You may need to raise that limit
as well if you want PageSpeed to optimize larger images.
JpegQualityForSaveData
This option sets the quality for JPEG images if the visitor requests to save
data and you decide to honor it. By default, PageSpeed supports
Save-Data
requests. See AllowVaryOn
for information about how to change it. This option overrides
JpegRecompressionQuality
, unless it is set to -1. The default
value is 50.
Note: new feature as of <IP_ADDRESS>
- Apache:
ModPagespeedJpegQualityForSaveData Quality
- Nginx:
pagespeed JpegQualityForSaveData Quality;
JpegRecompressionQuality
This option sets the quality for JPEG images. It overrides
ImageRecompressionQuality
, unless it is set to -1. The default
value is 85.
- Apache:
ModPagespeedJpegRecompressionQuality Quality
- Nginx:
pagespeed JpegRecompressionQuality Quality;
JpegRecompressionQualityForSmallScreens
This option sets the quality for JPEG images for users visiting your site from
a mobile device. It overrides JpegRecompressionQuality
, unless it
is set to -1. The default is 70.
- Apache:
ModPagespeedJpegRecompressionQualityForSmallScreens Quality
- Nginx:
pagespeed JpegRecompressionQualityForSmallScreens Quality;
NoTransformOptimizedImages
By default, PageSpeed-optimized resources are served with response headers that allow proxies and browsers to cache them for a long time, e.g.:
Cache-Control: max-age=31536000
With these headers, proxies are free to recompress images further. This may be beneficial to the overall user experience because it can reduce bandwidth. However, if you already use PageSpeed to compress images as much as you're comfortable with, then you can prevent compliant proxies from further recompressing them by turning on this feature, resulting in responses with header:
Cache-Control: max-age=31536000,no-transform
Note: new feature as of <IP_ADDRESS>
- Apache:
ModPagespeedNoTransformOptimizedImages on
- Nginx:
pagespeed NoTransformOptimizedImages on;
ProgressiveJpegMinBytes
Progressive JPEG offers better compression for large images, while non-progressive JPEG does better for small images. This option sets the cut-off position for the use of these two formats.
Note: PageSpeed predicts the size of the final compressed JPEG image and then compares the predicted size with this option to determine whether to use progressive format. Due to the accuracy of prediction, some optimized images that are encoded in non-progressive format might be larger than this option, or vice versa.
- Apache:
ModPagespeedProgressiveJpegMinBytes min_bytes
- Nginx:
pagespeed ProgressiveJpegMinBytes min_bytes;
ImageRecompressionQuality
This option sets the quality for JPEG and WebP formats. It can be overridden by any format-specific or application-specific quality. The default is 85.
- Apache:
ModPagespeedImageRecompressionQuality Quality
- Nginx:
pagespeed ImageRecompressionQuality Quality;
ServeRewrittenWebpUrlsToAnyAgent
When PageSpeed rewrites an
tag in HTML or a
background-url
in CSS in response to a request from a
WebP-capable browser, it may transcode the image to WebP format and
rewrites the URL using a .webp
extension. If a site visitor
copies the .webp
image URL and shares it, only WebP-capable
browsers will be able to display the image. Sites that place a high value
on such URL sharing can make PageSpeed serve PNG/JPEG on .webp
URLs by disabling the option
ServeRewrittenWebpUrlsToAnyAgent
:
- Apache:
ModPagespeedServeRewrittenWebpUrlsToAnyAgent off
- Nginx:
pagespeed ServeRewrittenWebpUrlsToAnyAgent off;
The default value of ServeRewrittenWebpUrlsToAnyAgent
is on
because some proxy caches strip the
User-Agent
and Accept
headers when transmitting
requests for resources to origin. In that scenario, PageSpeed cannot determine
whether the browser requesting the image can display WebP images. Thus it is
not possible to have all three of these features at the same time:
- Provide the best possible bandwidth and latency experience for visitors using modern browsers
- Enable the sharing of URLs between visitors and their friends using older browsers
-
Use a proxy cache that strips
User-Agent
andAccept
headers
If the first two features are important, the site should use proxy cache
technology or CDNs that do not strip User-Agent
and
Accept
. Be sure to check with your proxy cache or CDN vendor to
understand their policy on transmitting these headers.
WebpAnimatedRecompressionQuality
This option sets the quality for animated WebP images. It overrides
WebpRecompressionQuality
and applies to users from both mobile
and non-mobile devices, unless it is set to -1. The default is 70.
Note: new feature as of <IP_ADDRESS>
- Apache:
ModPagespeedWebpAnimatedRecompressionQuality Quality
- Nginx:
pagespeed WebpAnimatedRecompressionQuality Quality;
WebpQualityForSaveData
This option sets the quality for WebP images if both your site and your
user have agreed to use save-data. See AllowVaryOn
to learn how to enable save-data. This option overrides
WebpRecompressionQuality
and ModPagespeedWebpAnimatedRecompressionQuality
, unless it is set
to -1. The default value is 50.
Note: new feature as of <IP_ADDRESS>
- Apache:
ModPagespeedWebpQualityForSaveData Quality
- Nginx:
pagespeed WebpQualityForSaveData Quality;
WebpRecompressionQuality
This option sets the quality for WebP images. It overrides
ImageRecompressionQuality
, unless it is set to -1. The default
value is 80.
- Apache:
ModPagespeedWebpRecompressionQuality Quality
- Nginx:
pagespeed WebpRecompressionQuality Quality;
WebpRecompressionQualityForSmallScreens
This option sets the quality for WebP images for users visiting your site from
a mobile device. It overrides WebpRecompressionQuality
,
unless it is set to -1. The default is 70.
- Apache:
ModPagespeedWebpRecompressionQualityForSmallScreens Quality
- Nginx:
pagespeed WebpRecompressionQualityForSmallScreens Quality;


|
SMS Spam Collection Data Set
Download: Data Folder, Data Set Description
Abstract: The SMS Spam Collection is a public set of SMS labeled messages that have been collected for mobile phone spam research.
|
|
Data Set Characteristics: |
Multivariate, Text, Domain-Theory |
Number of Instances: |
5574 |
Area: |
Computer |
Attribute Characteristics: |
Real |
Number of Attributes: |
N/A |
Date Donated |
2012-06-22 |
Associated Tasks: |
Classification, Clustering |
Missing Values? |
N/A |
Number of Web Hits: |
184777 |
Source:
Tiago A. Almeida (talmeida ufscar.br)
Department of Computer Science
Federal University of Sao Carlos (UFSCar)
Sorocaba, Sao Paulo - Brazil
JosÃ© MarÃa GÃ³mez Hidalgo (jmgomezh yahoo.es)
R&D Department Optenet
Las Rozas, Madrid - Spain
Data Set Information:
This corpus has been collected from free or free for research sources at the Internet:
-> A collection of 425 SMS spam messages was manually extracted
from the Grumbletext Web site. This is a UK forum in which cell phone
users make public claims about SMS spam messages, most of them without
reporting the very spam message received. The identification of the text
of spam messages in the claims is a very hard and time-consuming task,
and it involved carefully scanning hundreds of web pages. The
Grumbletext Web site is: [Web Link].
-> A subset of 3,375 SMS randomly chosen ham messages of the NUS
SMS Corpus (NSC), which is a dataset of about 10,000 legitimate messages
collected for research at the Department of Computer Science at the
National University of Singapore. The messages largely originate from
Singaporeans and mostly from students attending the University. These
messages were collected from volunteers who were made aware that their
contributions were going to be made publicly available. The NUS SMS
Corpus is avalaible at: [Web Link].
-> A list of 450 SMS ham messages collected from Caroline Tag's PhD Thesis available at [Web Link].
-> Finally, we have incorporated the SMS Spam Corpus v.0.1 Big.
It has 1,002 SMS ham messages and 322 spam messages and it is public
available at: [Web Link]. This corpus has been used in the following academic researches:
[1] GÃ³mez Hidalgo, J.M., Cajigas Bringas, G., Puertas Sanz, E.,
Carrero GarcÃa, F. Content Based SMS Spam Filtering. Proceedings of the
2006 ACM Symposium on Document Engineering (ACM DOCENG'06), Amsterdam,
The Netherlands, 10-13, 2006.
[2] Cormack, G. V., GÃ³mez Hidalgo, J. M., and Puertas SÃ¡nz, E.
Feature engineering for mobile (SMS) spam filtering. Proceedings of the
30th Annual international ACM Conference on Research and Development in
information Retrieval (ACM SIGIR'07), New York, NY, 871-872, 2007.
[3] Cormack, G. V., GÃ³mez Hidalgo, J. M., and Puertas SÃ¡nz, E.
Spam filtering for short messages. Proceedings of the 16th ACM
Conference on Information and Knowledge Management (ACM CIKM'07).
Lisbon, Portugal, 313-320, 2007.
Attribute Information:
The collection is composed by just one text file,
where each line has the correct class followed by the raw message. We
offer some examples bellow:
ham What you doing?how are you?
ham Ok lar... Joking wif u oni...
ham dun say so early hor... U c already then say...
ham MY NO. IN LUTON<PHONE_NUMBER> RING ME IF UR AROUND! H*
ham Siva is in hostel aha:-.
ham Cos i was out shopping wif darren jus now n i called him 2 ask
wat present he wan lor. Then he started guessing who i was wif n he
finally guessed darren lor.
spam FreeMsg: Txt: CALL to No: 86888 & claim your reward of 3
hours talk time to use from your phone now! ubscribe6GBP/ mnth inc 3hrs
16 stop?txtStop
spam Sunshine Quiz! Win a super Sony DVD recorder if you canname the capital of Australia? Text MQUIZ to 82277. B
spam URGENT! Your Mobile No<PHONE_NUMBER>2 was awarded a L2,000 Bonus
Caller Prize on 02/09/03! This is our 2nd attempt to contact YOU! Call
0871-872-9758 BOX95QU
Note: the messages are not chronologically sorted.
Relevant Papers:
We offer a comprehensive study of this corpus in the
following paper. This work presents a number of statistics, studies and
baseline results for several machine learning methods.
Almeida, T.A., GÃ³mez Hidalgo, J.M., Yamakami, A. Contributions to
the Study of SMS Spam Filtering: New Collection and Results. Proceedings
of the 2011 ACM Symposium on Document Engineering (DOCENG'11), Mountain
View, CA, USA, 2011.
Citation Request:
If you find this dataset useful, you make a reference to our paper and the web page: [Web Link] in your papers, research, etc;
Send us a message to talmeida ufscar.br or jmgomezh yahoo.es in case you make use of the corpus.
We would like to thank Min-Yen Kan and his team for making the NUS SMS Corpus available.
|


Fri Feb 16, 2007
According to the Wikia Wiki, a wordbit is “the smallest deal that bears a meaning. Wordbits are the sound or sounds, sideput, that bear meaning.”
Wordbits are the building blocks of language. This website is my small attempt to bring meaning to what we do as writers and hopefully contribute something to the writing “blogosphere”, if you’ll excuse the jargon.
But this website is more than a blog. This is also a place where you can view my on-line portfolio, or check out some resources for other writers (still in progress). You can also read more about who I am, or check out my blogroll for other bloggers on culture, communication and technology.
Here is some more information about this site.
I’m currently using the Wordpress blogging engine (Version 2.0.7) to handle the content on this site. The modified cutline theme is courtesy of Chris Pearson. One cool feature of this theme is that everytime you log on to the main page you’ll see a randomly generated header image.
I’m hosting the site for free on awardspace, which means it tends to be a bit choppy. If you get script errors refresh the page (Hit F5) and it should be fine.


ISHML stands for Interactive Story grapH Management Library, but call it "Ishmael." It's a JavaScript library that facilitates writing interactive fiction (text adventure) applications for modern web browsers. The ISHML library has straightforwardly named properties and methods, many of which are chainable. Code written with ISHML is highly readable and intuitive.
Eventually, ISHML will address all aspects of creating interactive fiction. For now, though, ISHML is just a really flexible and powerful parser and text generation system that integrates easily into your projects.
It's open source and licensed under the ISC license.
Place the following scripts near the end of the HTML document, before the closing </body>
tag. Then add your own script below this script.
<script src="{{ site.ishml }}"></script>
<script src="{{ site.en_us }}"></script>
The text generation tutorial explains how to generate text.
The parsing tutorial explains how to use create a parser.
The API reference documents all features.
Contact: I am @bikibird on https://intfiction.org. I'd love to hear about anything you build with ISHML.
No whales were harmed in the making of this website.


Introduction
Time flies, two years have passed since I posted my first blog.
Here I am again, to announce the topic of this year’s first post will be (drumroll, please)…COVARIATE SHIFT!
This was actually inspired by a recent task I had at work. After a couple of weeks of researching, I would like to share a few learnings.
Outline
In this post, two demos are used to explain the issue of covariate shift and to show how to fix it.
In addition, there are two easy quizzes throughout this post to help you check your understanding of the key concepts. You can find the answers to the quizzes at the end of the post.
I have also added a few advanced topics and FAQs (yes, after the summary section, which is prepared for advanced learners).
The source code of all the simulations in the blog post can be found here.
A few more words
Covariate shift is a common issue that data scientists often encounter in the real world. However, not enough attention was paid to it.
At least I was not paying enough attention to this issue before my colleague Alex brought it up. He shared this concept with us using an easy demo (similar to Demo 1 in this post), which helps quite a lot for us to understand the potential issue that we might have at work. So a big thanks to my colleague.
As a machine learning beginner, it is fine if you can grasp the idea of covariate shift and have a basic understanding of how to fix it (as indicated in Demo 1 and 2). The key takeaways will be addressed in the Summary as well.
For those data scientists who already have some hands-on experiences, it is important to have a deeper understanding of this issue:
- Does my model have the issue of covariate shift?
- What are the most-used methods of dealing with covariate shift?
- Any caveats in implementing the covariate shift correction?
Hence, it is recommended to read through the section of the advanced topics and FAQs and check out the simulations.
The FAQs are actually the questions that popped up during the implementation of the covariate shift correction. I was trying to think deeper about questions like 1) whether my dataset indeed has the issue of covariate shift and 2) whether my correction is going to improve the model or make it worse. Hence, I ran a few simulations to solve my own doubts. This part contains my main learnings. I hope it can also help you with your work.
Now, let’s begin the journey!
Hold on, what is covariate shift?
Covariate shift refers to changes in the distribution of features in the training and test dataset.
For those who still have no idea after reading the sentence above, please read the background knowledge session below. Otherwise, please directly go to the first quiz :)
Background knowledge
Warning: Jargon ahead
Training dataset: A set of examples used to fit the parameters of a model.
Test dataset: Dataset used to provide an unbiased evaluation of the model fit on the training data set.
Target: Output variable or dependent variable of the model, the target we want to predict, usually donated by y.
Feature: Input variable or independent variable in the model, it can also be called as covariate, usually donated by x. One model can have one or more features.
Model: a function of feature(s) to predict the target.
What is linear regression?
A simple example of a machine learning model is a linear regression model:
One way to validate a linear regression model is to use Root-Mean-Square-Error, which is also called as RMSE.
The smaller the RMSE, the better the model fits the data.
If you want to know more about linear regression, please feel free to watch the youtube video here.
What is a classifier?
Linear regression is for predicting a continuous target variable.
What if our target variable is a dummy variable (e.g., yes or no)?
There are also quite a few classification models like logistic regression, multilayer perception classifier.
It is beyond the scope of this session to introduce these concepts in detail.
You just need to know a classifier is a model that predicts a classification problem based on a list of features.
And it is also important to know a few concepts about the validation of a classifier (e.g., confusion matrix, accuracy, precision, and recall):
The higher these scores, the better the model is.
What is covariate shift?
Covariate shift refers to the changes in the distribution of features in the training and test dataset.
It is often called as data drift, feature drift, or population shift.
In the image below (left), we can see that the input density are different between the train and test dataset.
If we train a model using the training samples (i.e., blue dots in the right pic), we will get an inaccurate model for predicting the test sample (i.e., black dots in the right pic).
Quiz 1: Which example below (left vs. right) is more likely to have the issue of covariate shift?
You can find the answer at the end of this post.
What is covariate shift correction?
The key idea behind the covariate shift correction is to train a re-weighted model.
It puts more weight on the samples with feature values that are more frequently shown in the test set, and vice versa.
You might wonder how to calculate the weight, so here come two demos:
- Demo 1: a simple example with only one feature in the dataset and it provides an intuitive solution
- Demo 2: an example with two features and uses a more general approach to correct for the covariate shift
Demo 1: An intuitive example with one feature only
Data Preparation
Prepare a target function with only 1 feature
Let us assume the relationship between x and y is as following: \[f(x) = -x^2 + x + 1\]
Prepare the train and test dataset (n=1000)
Then we generate the two sets of x distributions for training and test set (see the first two charts below).
Hence, the train and test data were generated by adding some random error on top of the expected y value for each x.
Visualize covariate shift
Let’s try to find the besting fitting line for the train and test data respectively. In the last chart below, we can see that the best fitting lines from the training and the test set are different from each other.
An intuitive solution
Remember that our goal is to generate an accurate model for the test data.
When there is a big difference in the feature distribution between the train and test dataset, we need to correct it by adjusting the weight of samples in the test set.
But how can we find the best weight to apply?
Intuitively speaking, we should use the ratio of the probability distribution of x: P_test(x)/P_train(x)
We already know the probability distribution of the feature in the train and test dataset.
P_train(x):
| x | frequency | p | |
|---|---|---|---|
| 0 | 0 | 194 | 0.194 |
| 1 | 1 | 142 | 0.142 |
| 2 | 2 | 137 | 0.137 |
| 3 | 3 | 136 | 0.136 |
| 4 | 4 | 105 | 0.105 |
| 5 | 5 | 83 | 0.083 |
| 6 | 6 | 84 | 0.084 |
| 7 | 7 | 60 | 0.060 |
| 8 | 8 | 34 | 0.034 |
| 9 | 9 | 25 | 0.025 |
P_test(x):
| x | frequency | p | |
|---|---|---|---|
| 0 | 0 | 25 | 0.025 |
| 1 | 1 | 35 | 0.035 |
| 2 | 2 | 72 | 0.072 |
| 3 | 3 | 81 | 0.081 |
| 4 | 4 | 76 | 0.076 |
| 5 | 5 | 94 | 0.094 |
| 6 | 6 | 124 | 0.124 |
| 7 | 7 | 147 | 0.147 |
| 8 | 8 | 159 | 0.159 |
| 9 | 9 | 187 | 0.187 |
Quiz 2: Which weight below is the correct one?
Option A: putting more weights when x is smaller
| x | weight | |
|---|---|---|
| 0 | 0 | 7.760000 |
| 1 | 1 | 4.057143 |
| 2 | 2 | 1.902778 |
| 3 | 3 | 1.679012 |
| 4 | 4 | 1.381579 |
| 5 | 5 | 0.882979 |
| 6 | 6 | 0.677419 |
| 7 | 7 | 0.408163 |
| 8 | 8 | 0.213836 |
| 9 | 9 | 0.133690 |
Option B: putting more weights when x is larger
| x | weight | |
|---|---|---|
| 0 | 0 | 0.128866 |
| 1 | 1 | 0.246479 |
| 2 | 2 | 0.525547 |
| 3 | 3 | 0.595588 |
| 4 | 4 | 0.723810 |
| 5 | 5 | 1.132530 |
| 6 | 6 | 1.476190 |
| 7 | 7 | 2.450000 |
| 8 | 8 | 4.676471 |
| 9 | 9 | 7.480000 |
Fit the best line in the train set after re-weighting and visualize
Now we can see the best fitting line after re-weighting (the black line in the left bottom chart) is overlapping with the best fitting line for the test data (the orange line in the right bottom chart).
The re-weighted model performs better than before regarding the test sample.
Demo 2: What shall we do if there is more than 1 feature?
Data Preparation
Prepare a target function with 2 features
Prepare train and test data (n=1000) and visualize
| x1 | x2 | y | |
|---|---|---|---|
| 0 | 4 | 6 | 67.714352 |
| 1 | 4 | 3 | 21.090243 |
| 2 | 2 | 6 | 63.327070 |
| 3 | 3 | 2 | 15.873481 |
| 4 | 3 | 4 | 25.794113 |
| ... | ... | ... | ... |
| 995 | 0 | 1 | 5.721640 |
| 996 | 2 | 0 | 16.315458 |
| 997 | 1 | 5 | 36.275323 |
| 998 | 1 | 4 | 30.408138 |
| 999 | 0 | 4 | 12.980950 |
1000 rows × 3 columns
| x1 | x2 | y | |
|---|---|---|---|
| 0 | 5 | 9 | 125.714352 |
| 1 | 9 | 9 | 169.090243 |
| 2 | 6 | 7 | 113.327070 |
| 3 | 3 | 5 | 39.873481 |
| 4 | 8 | 8 | 137.794113 |
| ... | ... | ... | ... |
| 995 | 3 | 5 | 45.721640 |
| 996 | 0 | 9 | 100.315458 |
| 997 | 7 | 5 | 90.275323 |
| 998 | 8 | 1 | 82.408138 |
| 999 | 6 | 3 | 46.980950 |
1000 rows × 3 columns
Covariate shift correction in four steps
With the following four steps, you can easily do the covariate shift correction.
Step 1: concatenate train (label 0) and test data (label 1)
Step 2: train a classifier between train and test (could be logistic regression or multilayer perceptron classifier)
Step 3: calculate the density ratio (p1/p0) for the train set
Step 4: train the model with the weighted sample (using density ratio as the weight)
Finally, as a validation, we will compare the RMSE of train and test data using different model results to see the effect of the correction.
Step 1: concatenate train (label 0) and test data (label 1)
# Step 1: assign a label of 1 to test data set, and a label of 0 to train data set
df_test["label"] = 1
df_train["label"] = 0
# Concat the two datasets into one data set
df_combined = pd.concat(
[df_train[["x1", "x2", "label"]], df_test[["x1", "x2", "label"]]]
)
df_combined
| x1 | x2 | label | |
|---|---|---|---|
| 0 | 4 | 6 | 0 |
| 1 | 4 | 3 | 0 |
| 2 | 2 | 6 | 0 |
| 3 | 3 | 2 | 0 |
| 4 | 3 | 4 | 0 |
| ... | ... | ... | ... |
| 995 | 3 | 5 | 1 |
| 996 | 0 | 9 | 1 |
| 997 | 7 | 5 | 1 |
| 998 | 8 | 1 | 1 |
| 999 | 6 | 3 | 1 |
2000 rows × 3 columns
Step 2: train a classifier between train and test
Train the classifier:
# Step 2: train the classifier using the combined dataset
X = df_combined[["x1", "x2"]]
y = df_combined["label"]
## Train logistic regression
clf = LogisticRegression().fit(X, y)
df_combined["label_hat_lr"] = clf.predict(df_combined[["x1", "x2"]])
Check the accuracy of the classifier:
def check_accuracy(df, col_y_pred, col_y_true="label"):
accuracy = accuracy_score(df[col_y_true], df[col_y_pred])
precision = precision_score(df[col_y_true], df[col_y_pred])
recall = recall_score(df[col_y_true], df[col_y_pred])
print(
f"""
accuracy: {round(accuracy, 3)}
precision: {round(precision, 3)}
recall: {round(recall, 3)}
"""
)
return accuracy, precision, recall
check_accuracy(df_combined, "label_hat_lr")
Results:
accuracy: 0.794
precision: 0.799
recall: 0.786
Step 3: calculate the density ratio (p1/p0) for the train set
# Step 3: get the density ratio for training set
df_train["density_ratio"] = [
i[1] / i[0] for i in clf.predict_proba(df_train[["x1", "x2"]])
]
df_train
| x1 | x2 | y | label | density_ratio | |
|---|---|---|---|---|---|
| 0 | 4 | 6 | 67.714352 | 0 | 1.633294 |
| 1 | 4 | 3 | 21.090243 | 0 | 0.433734 |
| 2 | 2 | 6 | 63.327070 | 0 | 0.758671 |
| 3 | 3 | 2 | 15.873481 | 0 | 0.190007 |
| 4 | 3 | 4 | 25.794113 | 0 | 0.459901 |
| ... | ... | ... | ... | ... | ... |
| 995 | 0 | 1 | 5.721640 | 0 | 0.038664 |
| 996 | 2 | 0 | 16.315458 | 0 | 0.053502 |
| 997 | 1 | 5 | 36.275323 | 0 | 0.332354 |
| 998 | 1 | 4 | 30.408138 | 0 | 0.213626 |
| 999 | 0 | 4 | 12.980950 | 0 | 0.145596 |
1000 rows × 5 columns
Step 4: Trian models using density ratio
def compute_rmse(df_train, df_test, weight=None):
X = df_train[["x1", "x2"]]
y = df_train["y"]
if weight:
w = df_train[weight]
# train a weighted model
lr = LinearRegression().fit(X, y, w)
df_train[f"y_hat_{weight}"] = lr.predict(X)
df_test[f"y_hat_{weight}"] = lr.predict(df_test[["x1", "x2"]])
print("RMSE for train set:")
print(round(rmse(df_train["y"], df_train[f"y_hat_{weight}"]), 2))
print("")
print("RMSE for test set:")
print(round(rmse(df_test["y"], df_test[f"y_hat_{weight}"]), 2))
else:
# train simple linear regression
lr = LinearRegression().fit(X, y)
df_train[f"y_hat"] = lr.predict(X)
df_test[f"y_hat"] = lr.predict(df_test[["x1", "x2"]])
print("RMSE for train set:")
print(round(rmse(df_train["y"], df_train["y_hat"]), 2))
print("")
print("RMSE for test set:")
print(round(rmse(df_test["y"], df_test["y_hat"]), 2))
return df_train, df_test, lr
Validation: Compare RMSE across models
No correction: simple linear regression
df_train, df_test, lr = compute_rmse(df_train, df_test)
RMSE for train set:
167.65
RMSE for test set:
352.05
With correction: weighted linear regression using density ratio
df_train, df_test, weighted_lr = compute_rmse(df_train, df_test, "density_ratio")
RMSE for train set:
280.07
RMSE for test set:
168.52
Adjusting the intensity of the density_ratio
The results above indicated that making the correction will increase error in the training set, but reduce error in the test set. What if we adjust the strength of the density ratio as a weight for the main model. You can find the simulation result below:
Summary
Covariate shift
Covariate shift refers to the changes in the distribution of features in the training and test dataset.
Covariate shift correction: importance weight using density ratio
The key idea behind the general approach of covariate shift correction is to train a classifier between the training and test set.
Then we can get the density ratio of p_test(x)/p_train(x) and use it to reweight the training set for training the final model.
Notes:
-
p_train(x): the probability of a sample comes from the training dataset given a set of features
-
p_test(x): the probability of a sample comes from the test dataset given a set of features
-
density ratio: p_test(x)/p_train(x)
Challenges?
Although the demos in this notebook seem promising and easy to implement, the application of covariate shift correction in the real world is still questionable:
- Need to have knowledge of the test data
- Need to have some knowledge of the target function
- Need to identify if there is a covariate shift or not
- Training the classifier is very time consuming for high-dimension dataset
- Uncertain results: It is possible that using a model that corrects for covariate shift may produce worse results than using a standard model without the correction.
Advanced topics
More background knowledge:
Types of dataset shift: Covariate shift (the shift of feature distributions) is not the only dataset shift we are likely to encounter, there are more types of dataset shift:
- prior probability shift: the shift of the target distribution
- concept shift: the shift of the relationship between the target and the feature(s)
- domain shift: involves changes in measurement
How to identify covariate shift?
- visualize feature distribution
- train a classifier for the combined data method (check for each feature)
Two methods of dealing with covariate shift:
- dropping of drifting features
- importance weight using density ratio estimation
- train a classifier yourself
- use a package like densratio to get density ratio
Frequently asked questions:
Q1: What if the classifier model is not accurate enough?
Answer:
- Situation 1: There is not too much signal in distinguishing train and test set –> no need to do covariate shift correction
- Situation 2: The classifier is not good enough to describe the feature difference between test and train set –> improve the classifier (e.g., instead of using logistic regression, use Multi-Layer Percepton)
Simulation:
In this simulation, we are going to reuse the datasets in Demo 2 and train a less accurate classifier by reducing the number of features.
# Bonus test: train a "poor" classifier using less features
X1 = df_combined[["x1"]]
y = df_combined["label"]
## Train logistic regression
clf1 = LogisticRegression().fit(X1, y)
df_combined["label_hat_lr_1"] = clf1.predict(df_combined[["x1"]])
print("Check the accuracy of the calssifier: logistic regression with only 1 feature")
display(_=check_accuracy(df_combined, "label_hat_lr_1"))
Check the accuracy of the “poor” classifier:
accuracy: 0.706
precision: 0.709
recall: 0.696
Make correction and check RMSE for train and test data:
# prepare the correct version of density ratio using the logistic regression model
df_train["density_ratio_1"] = [
i[1] / i[0] for i in clf1.predict_proba(df_train[["x1"]])
]
df_train, df_test, weighted_lr_1 = compute_rmse(df_train, df_test, "density_ratio_1")
RMSE result with a poor classifier (trained with 1 feature):
RMSE for train set:
219.39
RMSE for test set:
240.58
When we compare this result with the RMSE values above, we can see the weak classifier did the correction somehow, but the result is not as good as the result of a good classifier.
Q2: What if the sample size in the train set does not equal to the sample size in the test set?
**Answer: **
It is no problem when using the approach in the first demo (see simulation below).
However, when training the classifier as in the second approach, it is not recommended to use p_test(x)/p_train(x) directly, as it will result in a list of density ratios that are not centered at the value of 1.
Two solutions:
- Resample the training or test set to make the sample sizes equal
- After getting the density ratio, adjust it based on the sample size ratio (n_test/n_train)
Q3: What if the target function is perfectly linear?
Answer:
There is no need to do covariate shift correction if the target function is perfectly linear and the main model is also linear.
- Situation 1: When the error term in the observed data is relatively small, there should be no impact.
- Situation 2: When the error term in the observation data is large, then the prediction bias is mainly from the error term in the train and test data. The covariate shift correction will not work as well.
Simulation for Situation 1: relative small error term when generating the simulation data
Simulation for Situation 2: relative large error term when generating the simulation data
Quiz answers
Answer to Quiz 1: Left
Answer to Quiz 2: Option B
References
http://iwann.ugr.es/2011/pdf/InvitedTalk-FHerrera-IWANN11.pdf
https://www.youtube.com/watch?v=24YZ_62Jn-o&ab_channel=AlexSmola


Aliquam lorem ante dapibus
May 28th, 2048 in Web Design by 网页模板网页模板 provides a lot of high quality 网站模板 for your personal or commercial websites. All website templates are absolutely free to download, modify and apply for your websites without any restriction.
Continue reading... | Comments (124)


0.1.0
Version 0.1.0 of Quantipy is starting off the official documentation of the library. The docs are based on workflow examples to demonstrate and explain key features, capabilities and current limits.
Quantipy is now able to convert SPSS .sav files into or from its native input data sources (pandas.DataFrame/dict).
The aggregation engine has undergone some modifications to harmonize the main computation methods and add more flexibilty. There are no substantial changes to how Quantity interacts with the view methods, except for the instruction of code group arithmetics (to e.g. produce a Net Promoter Score view). It is recommended to read through the documentation of the aggregation engine and to review the view method customization examples.
Chains and Clusters can now produce pandas.DataFrame outputs that visualize their aggregation results. This enables the creation of raw reports that are not requiring any metadata sources. Please see examples here
Tests of signficance that are mimicking the askia software package now support testing of net-type Views just as their Dimensions counterparts already did in the last release.
When setting the split_view_names parameter to True, the output of the Stack’s describe() method will now only show all unique notations and their components to improve readability.
A View’s meta is now accessed via the meta() method. The meta attribute has been removed. A range of self-inspection methods have been added.


--- layout: default title: DrumMantra 3030 subTitle: Get Ready To Go Deeper body-id: sales-page css: - sales-page - main event-code: - Lead - ViewContent ---
The DrumMantra 3030 is a premium training course designed to strengthen your fundamental sense of time, rhythm, phrasing, coordination, odd time signatures, polymetric relationships, and much more…
Develop an effective practice regimen with the 3030 and begin playing with more confidence and mastery today.
Course Closed Looking for powerful practice material? Click here to stay up-to-date with Rich and the DrumMantra 3030.Lots of drummers spend between 3 and 5 hours a week in the practice room but rarely follow a clear, consistent routine. The biggest challenge is staying focused, followed by constantly second guessing whether they are working on the “right stuff.”
The DrumMantra 3030 is a “cross-training” course designed to develop multiple foundational drumming skills at once.
The length and sequence of each exercise was carefully crafted to develop muscle memory, focus, patience, feel, groove, and technique.
The goal of the course is to deepen the ability to quickly and efficiently express creative and appropriate musical ideas in the moment.
“DrumMantra” means rhythmic repetition with focused attention. Each rhythmic “mantra” is played repetitively for a duration required to begin developing muscle memory. When muscle memory of a pattern is achieved, it can be expressed in a musical way with ease and confidence.
protected by our 30-day money-back guarantee
Drummer, Composer, Author, & Educator
I’m the creator of The DrumMantra system, and author of The Foundational Series and The Primary Series books.
I have been a professional player and educator since 1991 and have dedicated the past ten years to developing a method of practice that is helping drummers all over the world.
The DrumMantra3030 is is a course that brings many of these concepts to life. I dedicated 4-6 hours a day, everyday, for 3 months to create the exercises, sequencing, play-alongs, and videos to make the 3030 an effective and powerful practice tool for you.
I can say with confidence that the 3030 will address the core issues in your playing and quickly take you the next level. With a deeper understanding of time, rhythm, phrasing, coordination, odd time signatures, and polymetric relationships, your playing will reach a whole new level.
" A great 30 day course that I guarantee will improve your feel, timing and independence! I recommend this course to all my students and will do it again myself. "
Stefan V.
The Hague, Netherlands
" This past week was a building block and after today I’m feeling more confident and relaxed. My mental focus has improved within the week and I feel it has impacted me as a teacher. Thanks Rich and everyone on this journey! I’m inspired everyday to become a better musician and educator by being apart of this project! Thanks guys! "
Josh B.
Denver, Colorado
" A definitive workout about polyrhythms, about melodies inside them, about hearing yourself inside the rhythms. It would also let doors to be opened, if you find new ways to apply the material. Definitely, it would make you a better drummer, and would greatly increase your sense of rhythm. Beautiful material. "
Carlos P.
Santa Cruz de Tenerife, Spain
" Love this course. You really develop an understanding of time in different time signatures throughout the course! I’ve noticed an improvement in my playing! "
Gustavo R.
Plainfield, Illinois
" The DrumMantra 3030 project is a great resource for all drummers and musicians alike. By committing to this course and the philosophy of the DrumMantra practice you will gain a greater understanding of time, rhythmic awareness, concentration, and musicianship. You will learn and be challenged from this course, learn how to learn because of this course, and you will be a better musician and person. Happy Drumming! Cheers! "
Bradley G.
Winnipeg, Manitoba
" DrumMantra3030 is such a fun way to become a better drummer!! Highly recommended!!
You'll feel the improvement right AWAY!! "
Geo M.
Hollywood, California
" The DrumMantra 3030 is a great resource to learn from and is now apart of my daily morning routine even after the 30 days have been up. It has made me more rhythmically aware, it’s helped build upon my timing and independence, and with very detailed play along tracks to assist you the whole time, my accuracy, feel, and ear has improved. I highly recommend trying it for yourself! "
Ryan C.
Bowmanville, Ontario
" I took the July 2018 DrumMantra3030 course and it really was one of the best decisions I could have made. "
Darren B.
Paris, France
I have complete confidence that the DrumMantra 3030 course will be an absolute game changer for your playing. In 30 days you will have an opportunity to view the enitre course. If you decide it isn't for you, simply contact me and I will immediately give you a 100% refund…no questions asked.
Rich Stitzel


nested partials work!
Section: 1
Section: 2
Section: 3
Section: 4
Section: 5
Section: 6
Section: 7
Section: 8
Section: 9
Section: 10


First Branch
Next Sibling
Prev Sibling
Next Branch
Prev Branch
Parent
Expand
Collapse
Expand All
Collapse All


# BladeDroid
_Notice that most of the provided command line examples work only if you have added your `tools` folder in the Android SDK to the path variable of your system. Do this by running `export PATH=$PATH:"/tools"` or adding this line to your `~/.bash_profile`._
## User Scripting (Blade Generation)
To convert eclipse-exported jar file to dalvik, which can be loaded.
/build-tools//dx --dex --output=output.jar input.jar
Put the resulting `.jar` file onto the external storage of your Android device under:
//blades//
Where the `` is the package name of the application to script for. (i.e. the project name which is the name of its `apk`)
Every `.jar` file found in this directory will be scanned for classes that inherit from
`AbstractBlade` that are then initiated and executed on every activity event.
## Instrumentation
The process of modifing an existing Android application to be user scriptable, is called instrumentation. This section gives an overview of how to do that.
### Compiling apk
Compile the instrumentation code using `ant` (Buildfile is in project directory). Run it as follows:
java -Xss50m -Xmx1500m -jar instrument.jar -apk -lib bladedroid.jar -aj /platforms/android-/android.jar
Here `bladedroid.jar` contains classes for `BladeDroid.java`, `BladeLoader.java` etc
### Adding Permission
The current version of the instrumentation does not automatically add the required `READ_EXTERNAL_STORAGE` permission to the `AndroidManifest.xml` file. For this, the following tag has to be added as a child node of the `manifest` tag.
This can be done using `apktool d -s ` as explained further down.
### Signing
Use `jarsigner` to sign the new modified `.apk` with your private key. The full details can be found in the [Android docs](http://developer.android.com/tools/publishing/app-signing.html). A short outline is provided here.
#### Retrieve a keypair
You can generate a keypair using the `keytool` command line tool. The following example generates a key pair that is valid for `10000` days (i.e. more than 27 years).
$ keytool -genkey -v -keystore .keystore -alias -keyalg RSA -keysize 2048 -validity 10000
#### Sign your instrumented application
You can use the provided `jarsigner` tool to sign your instrumented `.apk` file.
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore
#### Debug Key
You can also use the standard debug key `debug.keystore` (in `~/.android/`) with alias `android` and password `android`. Consult the [documentation](https://developer.android.com/tools/publishing/app-signing.html#debugmode) for details. The debug key is automatically generated when running the app through eclipse or using `ant debug`. Otherwise you can generate it by running
keytool -genkey -v -keystore ~/.android/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"
#### Possible Errors
It is possible, that the signing process fails with an error message like:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 462 but got 464 bytes)
This usually happens if the application is already signed and you try to sign it again with a production key. In this case you have to remove the `META-INF` folder from within the APK before you can sign it again. (unzip it, remove the folder and zip it again) __This should be automated__
### Aligning
Use `zipalign` to optimize the final `.apk`:
$ zipalign -v -f 4
where the `aligned-apk` should have the name it had before you instrumented it which is the project name. The added `-f` flag instructs the tool to overwrite existing files.
### Running new APK on Emulator
First start the emulator, either through eclipse, or through
android avd
then run (`-r` to overwrite existing installations)
adb install -r
### Modifying apk
To alter an `.apk` file manually use the `apktool` as provided by Google [here](https://code.google.com/p/android-apktool/). Possible tasks inlcude:
- Manual changes to AndroidManifest
- Looking for implementation details of apps to write Blades for
To decompile use:
apktool d []
To recompile (i.e. _build_):
apktool b [] []
If you just want to change either source code or resources, use the `-s` and `-r` flags repsectively during decompilation. (Will only decompile the wanted parts)


--- layout: default title: About ---
Welcome to my site. I've been adventuring for quite some time now. I've been to many places and I've seen many things. Maybe here I will be able to share some of my adventures with you.


{% extends "templates.jinja/base.page-with-navbar.html" %} {% block title %} Hesperian - Saving Mothers' Lives{% endblock %} {% block id %}Green_or_brown_waters{% endblock %} {% block content %}
Green or brown waters mean that the baby has passed stool inside the womb. He may be in trouble. The stool can get in the baby's mouth and nose, and it can be hard for him to get enough air.
If the mother is already pushing and the birth is coming soon, be ready to clean the baby's mouth at birth.  Keep the baby's head lower than his body to help the mucus come out. If the baby has difficulty breathing, or his skin stays blue after a few minutes, take him to a hospital.
{% endblock %} {% block footer %} {% endblock %}


Refactoring a ready code!
Need a Password Generator? Just a Click!
Code Quiz from Sid!
Your day schedule in real time.
Check the weather for the next 7 days
WORKOUT TRAINER


<< Back
Left.bll / Right.bll
(A key / D key)
Jump.bll
(Space bar
|| W key)
Sneak.bll
(S key)
Dash.bll
Undefined.bll
Undefined.bll
Undefined.bll


When you work with us,you are part of a team of committed collaborators.All aspects pf
our software development process are intergrated,interactive
and aglie.
Our approach unifies design,development and product management to create exceptional product.
We start each project by understanding your business goals,the users needs and the product requirements
Then we help transalte them into effective and elegant solution.
Before we sign a contact or write a line of code our team will spend the necessary time needed to understand
your product vision.
The outcome of this season is proposal or high-level statement of work.
based on your requirments,we can provide acomplete offering or just the pieces you need.
Our design practice offers a full range of services
including brand strategy,interaction and visual design
and user experience testing.
Throughout your project,our designers create and
implement visual design and workflows,solicite user
feedback and work with you to make sure what gets built
is what is needed.
All engineers are fluent in the latest enterprise,mobile
and web development technologies.
They collaborate with your team to write,and improve
code on daily basis,using proven practices such as
test-driven
development and pair programming.
Planning and development is iterative.Because we are
constantly coding and testing,
the product we build are
always ready to go live.
This iterative process allows for changes as business
requirments evolve.
DELANI STUDIO
2019


InsertXMLArray()
语法
Result = InsertXMLArray(ParentNode, Array() [, PreviousNode])概要
Insert the specified Array() as a new XML node into the given parent node.
参数
ParentNode The node into which to insert the new node. To insert the new node at the root of the tree, RootXMLNode() can be used here. Array() The array to insert into the XML. PreviousNode (optional) A childnode of 'ParentNode' after which the new node should be inserted. If this value is 0 or not specified, the new node is inserted as the first child of its parent. If this value is -1, the node is inserted as the last child of its parent.
返回值
The new XML node if it was created successfully or zero if no node could be inserted at this point.
备注
The rules specified in the CreateXMLNode() for where a new node can be inserted also apply to this function.
The inserted node is named "array" and the contained element nodes are named "element". If the array has multiple dimension, each element will have attributes indicating the coordinate of the element within the array, with each coordinate named "a", "b" and so forth. See below for an example of the created XML.
示例
; This example produces the following XML tree: ; ; <array> ; <element>red</element> ; <element>green</element> ; <element>blue</element> ; </array> ; Dim Colors$(2) Colors$(0) = "red" Colors$(1) = "green" Colors$(2) = "blue" If CreateXML(0) InsertXMLArray(RootXMLNode(0), Colors$()) FormatXML(0, #PB_XML_ReFormat) Debug ComposeXML(0) EndIf
示例
; This example produces the following XML tree: ; ; <array> ; <element a="0" b="0">0</element> ; <element a="0" b="1">1</element> ; <element a="1" b="0">10</element> ; <element a="1" b="1">11</element> ; <element a="2" b="0">20</element> ; <element a="2" b="1">21</element> ; </array> ; Dim MultiArray(2, 1) For a = 0 To 2 For b = 0 To 1 MultiArray(a, b) = a * 10 + b Next b Next a If CreateXML(0) InsertXMLArray(RootXMLNode(0), MultiArray()) FormatXML(0, #PB_XML_ReFormat) Debug ComposeXML(0) EndIf
参阅
ExtractXMLArray(), InsertXMLList(), InsertXMLMap(), InsertXMLStructure(),
已支持操作系统
所有


PART II. ORGANIZATION
§432:1-201 Incorporation by charter. Any mutual benefit society may be or become incorporated by charter, notwithstanding any limitations under the corporation law as to the purposes for which charters may be granted. Any society so chartered as a corporation shall be subject in all respects to this article. [L 1987, c 347, pt of §2; am L 2001, c 217, §1]


Lapis Lazuli Ministries exists to awaken the body of Christ to the extravagant love of God the Father. Lapis Lazuli Ministries aims to achieve our mission by coming alongside bodies of believers and encouraging training through conferences, seminars and out-reaches to express the supernatural life of Jesus Christ as modelled by Him.
Lapis Lazuli Ministries is about restoring the hearts back to the extravagant love of the Father. It's about raising up transfromed generations by repairing faulty foundation, it seeks to unite churches and ministeries by breaking down walls; and it celebrates all that unites thus impacting us. Lapis Lazuli Ministries is a vessel that seeks to carry foundational truth out to the four corners of the world.
Catch up on our latest events and conferences
{{item?.description | slice:0:20}}
We earnestly look forward to the great and mighty things the Lord will do through the Lapis LM Radio vision into which He has called us 🙏 God Bless You
Our app connects you to a variety of resources, including sermons, music, articles, event info, and more.


Several options are set with parameters of the form '-xi'. These are given after the COPY command and can be given in any order.
COPY infilename.ex1 outfilename.ex2 -x1 -x2 ...
They can also be used at the operating system prompt:
ST infilename.ex1 outfilename.ex2 -x1 -x2 …
Note that parameters can be entered in either upper or lower case.
Database Tables
Tables from or to databases such as Access must be specified on the command line with a parameter that follows the COPY command:
-Ttablename
For example:
copy dept.mdb out.dta -tsales
will move the sales table to the file out.dta.
Special Considerations for Database Table Output
Sometimes, when both the input and the output file require a table or subfile specification, the '-T' switch can be ambiguous. In that case, you can modify the switch with a '>' or '<'. The parameter '-T<' means the input table specification and '-T>' means the output table specification.
For example to transfer sheet 3 of an Excel file to an Access table named cities, you could write:
copy in.xls out.mdb -T<sheet3 -T>cities
Wildcard Operators
The wildcard operators '*' and '?' allow you to move more than one input Access data source table with a single command.
For example, suppose the Access data source company.mdb consists of two tables, sales and marketing. Then
copy company.mdb dept.xls -t*
will move each table in company.mdb to a separate Excel worksheet. The output worksheet names will be the root name of the output file that given in the COPY command) with the table names appended, dept_sales.xls and dept_marketing.xls.
Wildcards in the file name can be mixed with wildcards in the Table parameter. For example, to transfer all tables in all of the Access files in the directory indata and write them out in Stata format, you would use
copy indata/*.mdb outdata/*.dta -t*
Specifying Worksheet Ranges
Specifying a Range with a Parameter
Worksheet ranges can be specified with a parameter that follows the COPY command:
-R[page!]coor
where coor gives the coordinates of a specific range and the optional page specification, page!, gives the worksheet page, either as a name or a page number, followed by '!'. If no page is given, then by default the first page is used.
For example,
copy sales.wk1 dept1.sas7bdat -ra1:i20
will move the range A1:I20 to the file dept1.sas7bdat, while
copy testdat.wb3 trial1.sav -r4!c6:t200
will transfer the range C6:T200 from page 4 of the worksheet testdat.wb3 to the file trial1.sav.
Specifying Worksheet Pages
Worksheet pages can be specified with either of the parameters:
-Tn or -Tname
where n is the page number and name is the page name. You must use quotes around the entire parameter if name contains blanks.
Examples are:
copy dept.xls out.dta -t3
copy dept.xls out.dta "-tnov sales"
Wildcard Operators
The wildcard operators '*' and '?' allow you to move more than one input worksheet page with a single command.
For example, suppose the worksheet company.xls consists of two pages, sales and marketing. Then
copy company.xls dept.dbf -t*
will move each page to a separate dBASE file. The output file names will be the root name of the output file (that given in the COPY command) with the page names appended, dept_sales.dbf and dept_marketing.dbf.
Wildcards in the file name can be mixed with wildcards in the page parameter. For example, to transfer all of the pages in all of the worksheet files in the directory indata and write them out in Stata format, you would use
copy indata/*.mdb outdata/*.dta -t*
Selecting Members of SAS CPORT or Transport Files
Whenever you select a SAS CPORT or Transport file as input, the first member will be the one used as the input data set, unless you select another one.
If the data you wish to use are in a different member, you must use the parameter '-Tmembername', where membername is the member you wish to select.
COPY infile.xpt outfilename.ex2 -Tmembername
For example, to transfer the data from the member part4 of the SAS Transport file indata.xpt to the Gauss file outdata.dat, type:
copy indata.xpt outdata.dat -tpart4
Wildcard Operators
The wildcard operators '*' and '?' allow you to move more than one member of a SAS Transport file with a single command. The wildcard operators are used for SAS members in the same way that they are used for worksheet pages, as discussed above.


Scottish Fairy and Folk Tales, by George Douglas, [1901], at sacred-texts.com
THE Scottish Fairies, in like manner, sometimes reside in subterranean abodes, in the vicinity of human habitations, or, according to the popular phrase, under the "door-stane," or threshold; in which situation they sometimes establish an intercourse with men, by borrowing and lending, and other kindly offices. In this capacity they are termed "the good neighbours," from supplying privately the wants of their friends, and assisting them in all their transactions, while their favours are concealed. Of this the traditionary story of Sir Godfrey Macculloch forms a curious example.
As this Gallovidian gentleman was taking the air on horseback, near his own house he was suddenly accosted by a little old man arrayed in green, and mounted upon a white palfrey. After mutual salutation, the old man gave Sir Godfrey to understand that he resided under his habitation, and that he had great reason to complain of the direction of a drain, or common sewer, which emptied itself directly into his chamber of daïs 2. Sir Godfrey Macculloch was
a good deal startled at this extraordinary complaint; but, guessing the nature of the being he had to deal with, he assured the old man, with great courtesy, that the direction of the drain should be altered; and caused it to be done accordingly. Many years afterwards Sir Godfrey had the misfortune to kill, in a fray, a gentleman of the neighbourhood. He was apprehended, tried, and condemned. The scaffold upon which his head was to be struck off was erected on the Castle Hill of Edinburgh; but hardly had he reached the fatal spot when the old man, upon his white palfrey, pressed through the crowd with the rapidity of lightning. Sir Godfrey, at his command, sprung on behind him; the "good neighbour" spurred his horse down the steep bank, and neither he nor the criminal was ever again seen.
112:1 Sir Walter Scott, Minstrelsy of the Scottish Border.
112:2 Or, best room.


Trippy Trip
Search
Post Free Ad
Login
Register
Home
Trippy Trip
I have read and agree to all the terms & conditions
Register
Home
Trippy Trip
Login
Register
Back
Trippy Trip
Back
Trippy Trip
Price Range
$
Number of Passengers
Delete
Back
Trippy Trip
Upload
Back
Trippy Trip
Destination
Sydney
Melbourne
Tasmania
Accomodation
Transportation
Adventure Sport
Back
Trippy Trip
Submit
Loading...


Some normal text.
Here is some word-level formatting. Also, this uses two spaces before newline to ensure hard line breaks:
Italic.
Italic.
Bold.
Bold.
Bold with italic inside it.
Italic with bold inside it.
I am code
.
I am italic phrase on one line.
I am italic phrase wrapped across two lines in the Mardkdown source, did that work?
This is _surrounded by literal underlines_ and this is *surrounded by literal asterisks*.
A single backtick in a code span: `
A backtick-delimited string in a code span: `foo`
Here’s an example — right here — of automatic —
.
Here’s an example—right here—of automatic —
.
Did
get escaped properly?
Here are some footnote1 examples2. A non-numeric footnote label3.
Bulleted (unordered) list:
Ordered list:
Bulleted list with space between bullets:
Item 1
Item 2
Item 3
Bulleted, with sublists:
Ordered, with sublists:
A code block that was denoted by 4 leading spaces:
Code line 1.
Code line 2. These spaces [ ] should be preserved.
Code line 3. Don't do _italic_ or **bold** in here.
Code line 4. Stuff like  and & should be escaped.

Code line 2. These spaces [ ] should be preserved.
Code line 3. Don't do _italic_ or **bold** in here.
Code line 4. Stuff like  and & should be escaped.

Code line 2. These spaces [ ] should be preserved.
Code line 3. Don't do _italic_ or **bold** in here.
Code line 4. Stuff like  and & should be escaped.
Back to non-code-block. Next, how about a block quote:
Here is a multi-line block quote started with a single
>
to open it. Word formatting like italic and bold should work in this kind of block.
And:
Another multi-line block quote, where each line starts with its own
>
char.
Here is a link: Racket
Here are linkref style links: Racket and Google.
And here are the footnote refs:
Here an auto-link: http://www.racket-lang.org
Here an auto-link email<EMAIL_ADDRESS>Finally, here is an image:
Here is [normal bracketed text].
[More normal backeted text.]
Following are

elements:
How about literal HTML?
Here’s a table:
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
Here is span
— span — in the middle of a sentence.
code block
Some text.
The end.


Click in the boxes to colour them, that has the Antonyms of the given words.
1)
yes
go
no
so
2)
boy
girl
lady
man
3)
in
to
on
out
4)
lend
give
borrow
take
5)
stop
go
went
goes
6)
lost
lose
win
found
7)
here
inside
there
up
8)
day
morning
evening
night
Submit


RWL
NOT WRITE
NOT READY
UNIT
DESIGNATE
TRANSPORT POWER
ON
STANDBY
LOAD
UNLOAD
REWIND
LOCAL
1
2
3
4
5
6
7
8
9
10
UNIT DESIGNATE
RWLR
WRITE
NOT WRITE
ON
ST'DBY
UNLOADED
LANE 0
0
AT BOT
AT EOT
REWINDING
SUPPLY REEL


Serialized Form
serialVersionUID:<PHONE_NUMBER>479248757L
encoding
String encoding
inputASName
String inputASName
outputASName
String outputASName
serialVersionUID: 0L
posTagger
POSTagger posTagger
tokeniser
DefaultTokeniser tokeniser
sentenceSplitter
FakeSentenceSplitter sentenceSplitter
morpher
Morph morpher
rootFinderApplication
SerialAnalyserController rootFinderApplication
offsetComparator
OffsetComparator offsetComparator
ontology
Ontology ontology
separateCamelCasedWords
Boolean separateCamelCasedWords
- should camelCased words be separated so that projectName becomes project
Name
useResourceUri
Boolean useResourceUri
- should resource URI (usually called a fragment identifier - a set of
characters after / or #) be considered; for example, if there is a resource
with URI http://gate.ac.uk/ns/gate-ontology#POSTagger, should POSTagger be
considered or not
considerProperties
Boolean considerProperties
- should properties be considered or not; NOTE: if this parameter is set to
false, than propertiesToInlcude and propertiesToExclude will be ignored
allLookups
List<E> allLookups
- a list of lookups that will be created after processing of all relevant
data
applicationCorpus
Corpus applicationCorpus
listRoots
Map<K,V> listRoots
- a map of roots: a key is a lookup.list value, e.g. 'projects', and the
value is a root of that key, in this case that would be 'project'
considerHeuristicRules
Boolean considerHeuristicRules
- Should the rules be followed or not: if true then, few heuristic rules will
apply: the words containing spaces will be split; for example, if 'pos
tagger for spanish' would be analysed, 'for' would be considered a stop
word and heuristically derived would be 'pos tagger' and this would be
further used to add 'pos tagger' with heuristical level 0, and 'tagger'
with hl 1 to the gazetteer list; at runtime lower heuristical level should
be prefered
propertiesToInclude
String propertiesToInclude
- comma separated values of property names that will be considered when
initializing the gazetteer
propertiesToExclude
String propertiesToExclude
- comma separated values of property names that will be excluded when
initializing the gazetteer NOTE: setting propertiesToInclude to be
different from "" automatically means that all properties not in the list
will be excluded (in other words, if propertiesToInclude is set, it is not
necessary to set propertiesToExclude as all properties not listed in
propertiesToInclude will be excluded);
typesToConsider
Set<E> typesToConsider
additionalList
List<E> additionalList


Ian Ramos
Back-end Developer
I'm a developer specializing in a building and developing secure and scalable APIs with a good architecture.
I use JavaScript language for the development of my projects, throughNode.js. I am always looking for my next professional level developing code and solving problems with the highest quality possible.
My Skills
These are the technologies I study:
Back-end
Front-end
Database
Back-end frameworks
Tools
Others


fallbackImage
String or url
loadingTemplateUrl
Let's you use a template as the loading "spinner"
loadingTemplate
Let's you use a string or inline markup as the loading "spinner".
NOTE: if loadingTemplateUrl is defined, this options is ignored.
disableLazy
Disable lazy loading of images
nodesCDN
If true the following attributes are attached to the image src url:
width, height, mode[crop,resize,fit]
offest
Amount of distance from the bottom of the scrollable container before image is loaded
n-src
The source of the image. The standard "src" attribute is not supported as this gives people a chance to inject malicious code
n-image-container
If you are using lazyload, and the scroll happens inside a container (not the window), make sure to write the container selector in this attribute
n-image-container="#container"
aspect-ratio
If provided the image-container will be styled as an aspect-ratio container.
The following aspect ratios are provided by default: 4-2, 2-1, 16-9, 3-2, 1-1, 4-3, 3-4, but feel welcome to add more (look in the scss for examples)
alt
Just as you know it :-)
nDocs Github Link:
nDocs Github Stars:
nDocs Github Latest Release:
nDocs Npm Install Guide:
nDocs Angular Install Guide:
nDocs Callouts:
Severity 0
Just something nice
Could be a nice trick to take full advantage of XY
Severity 1
Oh this is probably worth reading
Maybe a browser inconsistency bug?
Severity 2
EVERYTHING IS ON FIRE!
Breaking changes! Deprecations! OH MY!
No Severity
Same as using severity 0
nDocs Nodes Website Link
nDocs Nodes Engineering Blog Link
nDocs Table
| Option | Default | Description |
foo
|
'bar'
|
Toggles using foo |


Package org.drip.historical.attribution
Class PositionChangeComponents
java.lang.Object
org.drip.historical.attribution.PositionChangeComponents
public class PositionChangeComponents
extends java.lang.Object
PositionChangeComponents contains the Decomposition of the Components of the Interval Change for a
given Position.
- Module = Computational Core Module
- Library = Computation Support
- Project = Historical State Processing Utilities
- Package = Position Market Change Components Attribution
- Author:
- Lakshmi Krishnamurthy
-
Constructor Summary
Constructors Constructor Description PositionChangeComponents(boolean bChangeTypeReturn, PositionMarketSnap pmsFirst, PositionMarketSnap pmsSecond, double dblAccrualChange, CaseInsensitiveHashMap<java.lang.Double> mapDifferenceMetric)
PositionChangeComponents Constructor -
Method Summary
Modifier and Type Method Description double
accrualChange()
Retrieve the Accrual Interval Changeboolean
changeTypeReturn()
Return the Position Change Typejava.lang.String
content()
Retrieve the Row of Content FieldsCaseInsensitiveHashMap<java.lang.Double>
differenceMetric()
Retrieve the Map of Difference Metricsdouble
explainedChange()
Retrieve the Explained Interval ChangeJulianDate
firstDate()
Retrieve the First Datedouble
grossChange()
Retrieve the Gross Interval Changedouble
grossCleanChange()
Retrieve the Gross Interval Clean Changejava.lang.String
header()
Retrieve the Row of Header Fieldsjava.util.Set<java.lang.String>
manifestMeasures()
Retrieve the Set of Manifest Measuresdouble
marketRealizationChange()
Retrieve the Full Manifest Measure Realization Position Changedouble
marketRollDownChange()
Retrieve the Full Manifest Measure Roll-down Position Changedouble
marketSensitivityChange()
Retrieve the Full Manifest Measure Market Sensitivity Position ChangePositionMarketSnap
pmsFirst()
Retrieve the First Position Market Snapshot InstancePositionMarketSnap
pmsSecond()
Retrieve the Second Position Market Snapshot InstanceJulianDate
secondDate()
Retrieve the Second Datedouble
specificMarketRealizationChange(java.lang.String strManifestMeasure)
Retrieve the Specific Manifest Measure Market Realization Position Changedouble
specificMarketRollDownChange(java.lang.String strManifestMeasure)
Retrieve the Specific Manifest Measure Market Roll-down Position Changedouble
specificMarketSensitivityChange(java.lang.String strManifestMeasure)
Retrieve the Specific Manifest Measure Market Sensitivity Position Changedouble
unexplainedChange()
Retrieve the Unexplained Interval ChangeMethods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
PositionChangeComponents
public PositionChangeComponents(boolean bChangeTypeReturn, PositionMarketSnap pmsFirst, PositionMarketSnap pmsSecond, double dblAccrualChange, CaseInsensitiveHashMap<java.lang.Double> mapDifferenceMetric) throws java.lang.ExceptionPositionChangeComponents Constructor- Parameters:
bChangeTypeReturn
- TRUE - Change Type is Return (Relative)pmsFirst
- The First Position Market Snapshot InstancepmsSecond
- The Second Position Market Snapshot InstancedblAccrualChange
- The Accrual Change Component of Interval Return/ChangemapDifferenceMetric
- The Map of Difference Metrics- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
-
Method Details
-
changeTypeReturn
public boolean changeTypeReturn()Return the Position Change Type- Returns:
- TRUE - Change Type is Return (Relative)
-
manifestMeasures
public java.util.Set<java.lang.String> manifestMeasures()Retrieve the Set of Manifest Measures- Returns:
- The Set of Manifest Measures
-
pmsFirst
Retrieve the First Position Market Snapshot Instance- Returns:
- The First Position Market Snapshot Instance
-
pmsSecond
Retrieve the Second Position Market Snapshot Instance- Returns:
- The Second Position Market Snapshot Instance
-
firstDate
Retrieve the First Date- Returns:
- The First Date
-
secondDate
Retrieve the Second Date- Returns:
- The Second Date
-
grossCleanChange
public double grossCleanChange()Retrieve the Gross Interval Clean Change- Returns:
- The Gross Interval Clean Change
-
grossChange
public double grossChange()Retrieve the Gross Interval Change- Returns:
- The Gross Interval Change
-
specificMarketRealizationChange
public double specificMarketRealizationChange(java.lang.String strManifestMeasure) throws java.lang.ExceptionRetrieve the Specific Manifest Measure Market Realization Position Change- Parameters:
strManifestMeasure
- The Manifest Measure- Returns:
- The Specific Manifest Measure Market Realization Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
marketRealizationChange
public double marketRealizationChange() throws java.lang.ExceptionRetrieve the Full Manifest Measure Realization Position Change- Returns:
- The Full Manifest Measure Realization Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
specificMarketSensitivityChange
public double specificMarketSensitivityChange(java.lang.String strManifestMeasure) throws java.lang.ExceptionRetrieve the Specific Manifest Measure Market Sensitivity Position Change- Parameters:
strManifestMeasure
- The Manifest Measure- Returns:
- The Specific Manifest Measure Market Sensitivity Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
marketSensitivityChange
public double marketSensitivityChange() throws java.lang.ExceptionRetrieve the Full Manifest Measure Market Sensitivity Position Change- Returns:
- The Full Manifest Measure Market Sensitivity Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
specificMarketRollDownChange
public double specificMarketRollDownChange(java.lang.String strManifestMeasure) throws java.lang.ExceptionRetrieve the Specific Manifest Measure Market Roll-down Position Change- Parameters:
strManifestMeasure
- The Manifest Measure- Returns:
- The Specific Manifest Measure Market Roll-down Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
marketRollDownChange
public double marketRollDownChange() throws java.lang.ExceptionRetrieve the Full Manifest Measure Roll-down Position Change- Returns:
- The Full Manifest Measure Roll-down Position Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
accrualChange
public double accrualChange()Retrieve the Accrual Interval Change- Returns:
- The Accrual Interval Change
-
explainedChange
public double explainedChange() throws java.lang.ExceptionRetrieve the Explained Interval Change- Returns:
- The Explained Interval Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
unexplainedChange
public double unexplainedChange() throws java.lang.ExceptionRetrieve the Unexplained Interval Change- Returns:
- The Unexplained Interval Change
- Throws:
java.lang.Exception
- Thrown if the Inputs are invalid
-
differenceMetric
Retrieve the Map of Difference Metrics- Returns:
- The Map of Difference Metrics
-
header
public java.lang.String header()Retrieve the Row of Header Fields- Returns:
- The Row of Header Fields
-
content
public java.lang.String content()Retrieve the Row of Content Fields- Returns:
- The Row of Content Fields
-


ADP
: adposition
Definition
Adposition is a cover term for prepositions and postpositions, however Slovenian only has prepositions. They normally occur before noun phrases to express its grammatical and semantic relation to another unit within a clause.
Adpositions determine the case of the complement phrase, e.g. brez časpopisa “without newspaper” (genitive), k časopisu “to newspaper” (dative), za časopis “for newspaper” (accusative), v časopisu “in newspaper” (locative), s časopisom “with newspaper” (instrumental).
Examples
- iz “from”, do “to”, zaradi “because of”
- k “to”, proti “against”, kljub “despite”
- za “for”, na “on”, v “in”
- po “after”, o “about”, pri “at”
- z “with”, med “between”, pred “before”
Conversion from JOS
All prepositions become ADP
.
Treebank Statistics (UD_Slovenian)
There are 50 ADP
lemmas (0%), 53 ADP
types (0%) and 11900 ADP
tokens (9%).
Out of 16 observed tags, the rank of ADP
is: 9 in number of lemmas, 10 in number of types and 5 in number of tokens.
The 10 most frequent ADP
lemmas: v, na, z, za, po, iz, o, pri, od, do
The 10 most frequent ADP
types: v, na, za, z, s, po, iz, o, pri, od
The 10 most frequent ambiguous lemmas: za (ADP 1340, ADV 8), do (ADP 322, X 1), proti (ADP 91, ADV 8), čez (ADP 42, ADV 1), glede (ADV 27, ADP 24), konec (NOUN 83, ADP 24), okoli (ADP 18, ADV 16), okrog (ADP 13, ADV 12), znotraj (ADP 12, ADV 1), razen (ADJ 11, ADP 7)
The 10 most frequent ambiguous types: za (ADP 1217, ADV 8), do (ADP 298, X 1), proti (ADP 86, ADV 8), čez (ADP 36, ADV 1), glede (ADV 19, ADP 18), konec (ADP 20, NOUN 18), okoli (ADP 16, ADV 16), sredi (ADP 15, NOUN 4), okrog (ADV 12, ADP 10), zunaj (ADP 6, ADV 5)
- za
- do
- proti
- čez
- glede
- konec
- okoli
- sredi
- okrog
- zunaj
Morphology
The form / lemma ratio of ADP
is 1.060000 (the average of all parts of speech is 1.870691).
The 1st highest number of forms (2) was observed with the lemma “k”: h, k.
The 2nd highest number of forms (2) was observed with the lemma “z”: s, z.
The 3rd highest number of forms (2) was observed with the lemma “zaradi”: Zarad, zaradi.
ADP
occurs with 1 features: sl-feat/Case (11900; 100% instances)
ADP
occurs with 5 feature-value pairs: Case=Acc
, Case=Dat
, Case=Gen
, Case=Ins
, Case=Loc
ADP
occurs with 5 feature combinations.
The most frequent feature combination is Case=Loc
(4826 tokens).
Examples: v, na, po, o, pri, ob
Relations
ADP
nodes are attached to their parents using 4 different relations: sl-dep/case (11878; 100% instances), sl-dep/nmod (12; 0% instances), sl-dep/mark (7; 0% instances), sl-dep/conj (3; 0% instances)
Parents of ADP
nodes belong to 14 different parts of speech: NOUN (9532; 80% instances), PROPN (920; 8% instances), DET (570; 5% instances), PRON (437; 4% instances), ADJ (225; 2% instances), NUM (122; 1% instances), ADV (69; 1% instances), VERB (12; 0% instances), X (4; 0% instances), ADP (3; 0% instances), PUNCT (2; 0% instances), SCONJ (2; 0% instances), INTJ (1; 0% instances), PART (1; 0% instances)
11875 (100%) ADP
nodes are leaves.
21 (0%) ADP
nodes have one child.
1 (0%) ADP
nodes have two children.
3 (0%) ADP
nodes have three or more children.
The highest child degree of a ADP
node is 3.
Children of ADP
nodes are attached using 4 different relations: sl-dep/fixed (23; 72% instances), sl-dep/cc (3; 9% instances), sl-dep/conj (3; 9% instances), sl-dep/punct (3; 9% instances)
Children of ADP
nodes belong to 6 different parts of speech: NOUN (12; 38% instances), SCONJ (7; 22% instances), DET (4; 13% instances), ADP (3; 9% instances), CCONJ (3; 9% instances), PUNCT (3; 9% instances)
Treebank Statistics (UD_Slovenian-SST)
There are 36 ADP
lemmas (1%), 38 ADP
types (1%) and 1202 ADP
tokens (6%).
Out of 16 observed tags, the rank of ADP
is: 11 in number of lemmas, 12 in number of types and 7 in number of tokens.

The 1st highest number of forms (2) was observed with the lemma “k”: h, k.
The 2nd highest number of forms (2) was observed with the lemma “z”: s, z.
The 3rd highest number of forms (1) was observed with the lemma “blizu”: blizu.
ADP
occurs with 1 features: sl-feat/Case (1202; 100% instances)
ADP
occurs with 5 feature-value pairs: Case=Acc
, Case=Dat
, Case=Gen
, Case=Ins
, Case=Loc
ADP
occurs with 5 feature combinations.
The most frequent feature combination is Case=Loc
(462 tokens).
Examples: v, na, po, pri, o, ob
Relations
ADP
nodes are attached to their parents using 8 different relations: sl-dep/case (1126; 94% instances), sl-dep/reparandum (37; 3% instances), sl-dep/fixed (12; 1% instances), sl-dep/nmod (10; 1% instances), sl-dep/obl (8; 1% instances), sl-dep/cc (4; 0% instances), sl-dep/advmod (3; 0% instances), sl-dep/mark (2; 0% instances)
Parents of ADP
nodes belong to 10 different parts of speech: NOUN (778; 65% instances), PROPN (113; 9% instances), PRON (76; 6% instances), DET (67; 6% instances), ADJ (52; 4% instances), ADV (34; 3% instances), NUM (27; 2% instances), ADP (24; 2% instances), VERB (17; 1% instances), X (14; 1% instances)
1171 (97%) ADP
nodes are leaves.
24 (2%) ADP
nodes have one child.
6 (0%) ADP
nodes have two children.
1 (0%) ADP
nodes have three or more children.
The highest child degree of a ADP
node is 3.
Children of ADP
nodes are attached using 5 different relations: sl-dep/reparandum (27; 69% instances), sl-dep/fixed (7; 18% instances), sl-dep/discourse:filler (3; 8% instances), sl-dep/case (1; 3% instances), sl-dep/cc (1; 3% instances)
Children of ADP
nodes belong to 8 different parts of speech: ADP (24; 62% instances), SCONJ (4; 10% instances), INTJ (3; 8% instances), X (3; 8% instances), DET (2; 5% instances), ADV (1; 3% instances), CCONJ (1; 3% instances), NOUN (1; 3% instances)
ADP in other languages: [am] [ar] [bg] [bxr] [ca] [ckb] [cop] [cs] [cu] [da] [de] [el] [en] [es] [et] [eu] [fa] [fi] [fo] [fr] [ga] [gl] [got] [grc] [he] [hi] [hr] [hu] [id] [it] [ja] [kk] [kmr] [ko] [la] [lv] [mr] [nl] [no] [pl] [pt] [ro] [ru] [sa] [sk] [sla] [sl] [so] [sr] [sv] [swl] [ta] [tr] [ug] [uk] [u] [urj] [ur] [vi] [yue] [zh]


BACKDRAFT A film review by Mark R. Leeper Copyright 1991 Mark R. Leeper
Capsule review: BACKDRAFT loses points for squandering a good idea on a prosaic plot structure, but some of its scenes are breathtaking. I would have liked a better and more original story, but the film still is exciting. Rating: high +1 (-4 to +4).
The first movies were all non-fiction. The early filmmakers simply shot the world they saw around them. One of the more common subjects was firemen fighting fires. In 1902 Edwin S. Porter (who the next year made THE GREAT TRAIN ROBBERY) made what is considered to be the first non-documentary film. He took previously shot footage of firemen and edited the pieces together to tell the first fiction story in cinema. He called it LIFE OF AN AMERICAN FIREMAN. As time went by, however, the subject of firefighting showed up less and less. It is difficult to think of a sound film that is mostly about firefighting. Films such as TOWERING INFERNO occasionally have firefighting as a substantial subplot, but rare is the film with firefighters as its main characters. That is perhaps unfortunate since there is great dramatic potential in the idea of the firefighter.
There certainly seem to be enough films about soldiers fighting an enemy who, in the case of most American wars, will be vanquished within five years or less. Firemen fight battles in a war they can never in their lifetimes hope ultimately to win. Films such as GHOSTBUSTERS turn to the supernatural to provide a towering dramatic force that a few brave people, with whatever equipment they can carry, have to stand up to. It is not hard to see parallels to firefighting, in which a person can be called on to fight an enemy ten stories high. As one of the characters in BACKDRAFT describes fire, "It's a living thing. It breathes, it eats, and it hates. The only way to beat it is to think like it.... The only way to truly kill it is to love it. a little." The dramatic potential for a powerful and frightening film about firefighting is there, but unfortunately it is only partially fulfilled by BACKDRAFT.
As the film opens in 1971, we meet a young firefighter idolized by his two sons. He takes his younger son, Brian to watch him fight a fire, not knowing that Brian will also be seeing him martyred by his hazardous occupation. Flash forward twenty years and the older son is now a hotshot lieutenant in the fire department. Lt. Stephen McCaffrey, now nicknamed "Bull," is played (as his father was) by Kurt Russell. The younger son Brian McCaffrey (played by William Baldwin) has been unsuccessful at several abortive careers and now is himself trying his hand at firefighting. Brian is assigned to the same fire company as Stephen is. This opens the way for the first of several themes, the rivalry of the two brothers.  And one more complication: there is an arsonist loose setting small but very explosive sorts of fires. Fire Inspector Donald Ringate (played by Robert DeNiro) is doing the detective work to try to track down the deadly firebug.
In the war against fire it is possible to win battles, but the war never ends. There will always be another fire. This is probably why the plot relies so heavily on its arson subplot. A film does not feel right unless it has a conflict which is resolved. Since it is impossible to conquer fire the script, unfortunately, creates an enemy that can be conquered--a single arsonist. That unfortunately turns this film into a rather pedestrian mystery story. Too much of BACKDRAFT is about people against other people; not enough is about people against fire. Too much of the script is very unoriginal, including one sequence toward the end that is very nearly a direct steal from another current thriller (or at least from books by the author of the thriller). While visually this film is a genuine spectacular, some of the touches of the script are very weak. In one scene Stephen is talking to someone on the street while his friends surprise him by hooking up a fire hose and spraying him. It does not seem that there can be an unobtrusive way to hook up a hose four inches in diameter. That sort of thing attracts attention! In the last fifteen minutes the writing and even the acting seriously deteriorate. There are some incredibly cliched scenes. William Baldwin seems to stop at one point during an alarm and he poses on the firepole for Ron Howard's cameras. There is an action sequence to match any in a James Bond film, but it seems designed mostly to give BACKDRAFT a punch finish. It is extremely melodramatic.
The fire photography is very much the star of BACKDRAFT as much as any of the humans. Assisted by Industrial Light and Magic effects crews, the camera shows many different textures of flame. Sometimes the flame is beautiful enough that some audience members may go out and try to duplicate the arsonist's crime. There are many fire sequences, but there are two extended sequences that are particularly exciting. Hans Zimmer's score makes a very impressive contribution to the film also. I would give BACKDRAFT a high +1 on the -4 to +4 scale.
Mark R. Leeper att!mtgzy!leeper<EMAIL_ADDRESS>.
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


---
layout: layouts/default
title: Posts - Mark's Blog
subtitle: A few of my thoughts.
pagination:
data: collections.blogPages
size: 1
alias: tag
permalink: /blog/{% if tag.pageNumber!=0 %}{{ tag.pageNumber }}/{% endif %}
---
My Thoughts
{% comment %}
In order for the pagination list to work, we need to set up two things:
- currentCollection: the collection we want to iterate over (e.g. blog pages or tag pages)
- linkHead: the head of the pagination link (e.g. `/blog/` or `/blog/tags/tech/`)
{% endcomment %}
{% assign currentCollection = collections.blogPages %}
{% capture linkHead %}/blog/{% endcapture %}
{% include 'snippets/post-pagination.html' %}
{% for post in tag.pageData %}
{% include 'snippets/post-card.html' %}
{% endfor %}
{% capture title %}Page {{ tag.pageNumber }} - Mark's Blog{% endcapture %}
{% pageMetadata, title, "A few of my thoughts." %}