f



Adding a suffix array index

Hello,

I'm working on a thesis project where I explore the addition of a
specialized, bioinformatics-related data type to a RDBMS. My choice of
RDBMS is PostgreSQL, of course, and I've started by adding a "dnaseq" (DNA
sequence) data type, using PostgreSQL's APIs for type additions.

The idea is to try to make it practical and even "attractive" to work with
DNA sequences in an RDBMS. My starting goal is to make it viable to work
with sequences in the 50-500 million base range. Some may think that
RDBMSes and long chunks of data don't match well. My opinion is that the
increasing power of computers and RDBMS software should at some point make
it possible to work with DNA sequences in a "normal" data management
setting like a RDBMS, instead of solely using stand-alone tools and
stand-alone data files. Anyways, it's an open question if my hypothesis is
right.

The basic parts of the type are pretty much done. Those interested may
have a look at http://troels.arvin.dk/svn-snap/postgresql-dnaseq/ (the
code organization needs some clean-up). The basic type implementation
should be improved by adding more string functions and by implementing a
set of specialized selectivity functions. Part of my current code concerns
packing DNA characters: As the alphabet of DNA strings is very small (four
characters), it seems like a straigt-forward optimization to store each
character in two bits. A warning: This is my first C project, so please
don't laugh too much (publicly) if you find strange constructs in my code...

Although B-trees and hash indexes may be used with my dnaseq type, they
aren't very interesting for long DNA sequences. I would like to add
support for adding a suffix array or suffix tree based index to dnaseq
columns where the user expects long sequences.

My review of the latest academic work on indexing of long sequences
indicates that suffix arrays are probably the way to go: Recent advances
in suffix array algorithms make them more attractive than suffix trees
(because the take up less space). And since the DNA data I'm currently
trying to support aren't separated in words, a string B-tree doesn't seem
to be relevant.

My first and most immediate goal is to support efficient answering of a
question like "which rows contain the sequence TTGACCACTTG in column foo?".

I have to immediate problems:
1. The algoriths I've found don't indicate a good way to
   update index arrays. So I'm thinking of implementing
   a sort of index-"cluster" which has one sub-index per
   indexed value. That way, I don't have to worry about
   updating a large index covering all the indexes values
   in the column. Is it conceivable to create such an
   index "cluster"?
2. Does someone know of interesting documentation (perhaps
   in the form of interesting code comments) which I should
   read, as a basis for creating a non-standard index type
   in PostgreSQL?

-- 
Greetings from Troels Arvin, Copenhagen, Denmark



---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

0
troels
11/19/2004 10:42:38 AM
comp.postgresql.hackers 2733 articles. 0 followers. Post Follow

8 Replies
546 Views

Similar Articles

[PageSpeed] 27

Hi,

your project looks very attractive. In principle, suffix array should be
implemented using GiST framework. String Btree should be very useful
for your problem. My student is working on string btree library, but we
have no plan to intergrate it into postgresql.

 	Oleg


On Fri, 19 Nov 2004, Troels Arvin wrote:

> Hello,
>
> I'm working on a thesis project where I explore the addition of a
> specialized, bioinformatics-related data type to a RDBMS. My choice of
> RDBMS is PostgreSQL, of course, and I've started by adding a "dnaseq" (DNA
> sequence) data type, using PostgreSQL's APIs for type additions.
>
> The idea is to try to make it practical and even "attractive" to work with
> DNA sequences in an RDBMS. My starting goal is to make it viable to work
> with sequences in the 50-500 million base range. Some may think that
> RDBMSes and long chunks of data don't match well. My opinion is that the
> increasing power of computers and RDBMS software should at some point make
> it possible to work with DNA sequences in a "normal" data management
> setting like a RDBMS, instead of solely using stand-alone tools and
> stand-alone data files. Anyways, it's an open question if my hypothesis is
> right.
>
> The basic parts of the type are pretty much done. Those interested may
> have a look at http://troels.arvin.dk/svn-snap/postgresql-dnaseq/ (the
> code organization needs some clean-up). The basic type implementation
> should be improved by adding more string functions and by implementing a
> set of specialized selectivity functions. Part of my current code concerns
> packing DNA characters: As the alphabet of DNA strings is very small (four
> characters), it seems like a straigt-forward optimization to store each
> character in two bits. A warning: This is my first C project, so please
> don't laugh too much (publicly) if you find strange constructs in my code...
>
> Although B-trees and hash indexes may be used with my dnaseq type, they
> aren't very interesting for long DNA sequences. I would like to add
> support for adding a suffix array or suffix tree based index to dnaseq
> columns where the user expects long sequences.
>
> My review of the latest academic work on indexing of long sequences
> indicates that suffix arrays are probably the way to go: Recent advances
> in suffix array algorithms make them more attractive than suffix trees
> (because the take up less space). And since the DNA data I'm currently
> trying to support aren't separated in words, a string B-tree doesn't seem
> to be relevant.
>
> My first and most immediate goal is to support efficient answering of a
> question like "which rows contain the sequence TTGACCACTTG in column foo?".
>
> I have to immediate problems:
> 1. The algoriths I've found don't indicate a good way to
>   update index arrays. So I'm thinking of implementing
>   a sort of index-"cluster" which has one sub-index per
>   indexed value. That way, I don't have to worry about
>   updating a large index covering all the indexes values
>   in the column. Is it conceivable to create such an
>   index "cluster"?
> 2. Does someone know of interesting documentation (perhaps
>   in the form of interesting code comments) which I should
>   read, as a basis for creating a non-standard index type
>   in PostgreSQL?
>
>

 	Regards,
 		Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

0
oleg
11/19/2004 12:35:06 PM
On R, 2004-11-19 at 12:42, Troels Arvin wrote:
> The basic parts of the type are pretty much done. Those interested may
> have a look at http://troels.arvin.dk/svn-snap/postgresql-dnaseq/ (the
> code organization needs some clean-up). The basic type implementation
> should be improved by adding more string functions and by implementing a
> set of specialized selectivity functions. 

I cant answer your immediate questions, just rant on general issues ;)

> Part of my current code concerns packing DNA characters: As the alphabet 
> of DNA strings is very small (four characters), it seems like a 
> straigt-forward optimization to store each character in two bits. 

My advice would be to get it to work first, oprimize later.

Thus I guess you could start by storing DNA sequences as character
strings.

> A warning: This is my first C project, so please
> don't laugh too much (publicly) if you find strange constructs in my code...

Then even more so - get the novel and generally interesting part
(indexing huge arrays) right first, and optimise for space (compressing
4 chars into 1) later.

You could do this 4->1 compression when storing the string into tuple,
but I strongly recommend doing actual work (indexing/searching) at a
level that C directly supports (i.e. bytes/characters)

This enables you to get the basics right first without distraction from
all bit-shifting inside bytes. A good tuned algorithm will almost
certainly offset the 4 time space disadvantage.

....

> My first and most immediate goal is to support efficient answering of a
> question like "which rows contain the sequence TTGACCACTTG in column foo?".

If you store your sequences as strings, you may try to use trigrams (or
modify them to 4,5,6 or 7-grams ;) to get some feel how that works.

trigram module is in contrib/pg_trgm.

------------
Hannu


---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

0
hannu
11/19/2004 12:38:20 PM
Hi Troels,

This is not related to the database aspects of your question... But there
are more than 4 possible letters in DNA sequences, 16 in fact. Depending on
the accuracy of the DNA sequences you are storing, you may come across
ambiguity DNA bases, so your type will have to take these into account. The
possible letters (according to IUPAC rules) are listed at the bottom of this
page

http://gnomix.ansci.umn.edu/FASTA.html

Cheers

Adam


> Hello,
> 
> I'm working on a thesis project where I explore the addition of a
> specialized, bioinformatics-related data type to a RDBMS. My choice of
> RDBMS is PostgreSQL, of course, and I've started by adding a "dnaseq" (DNA
> sequence) data type, using PostgreSQL's APIs for type additions.
> 
> The idea is to try to make it practical and even "attractive" to work with
> DNA sequences in an RDBMS. My starting goal is to make it viable to work
> with sequences in the 50-500 million base range. Some may think that
> RDBMSes and long chunks of data don't match well. My opinion is that the
> increasing power of computers and RDBMS software should at some point make
> it possible to work with DNA sequences in a "normal" data management
> setting like a RDBMS, instead of solely using stand-alone tools and
> stand-alone data files. Anyways, it's an open question if my hypothesis is
> right.
> 
> The basic parts of the type are pretty much done. Those interested may
> have a look at http://troels.arvin.dk/svn-snap/postgresql-dnaseq/ (the
> code organization needs some clean-up). The basic type implementation
> should be improved by adding more string functions and by implementing a
> set of specialized selectivity functions. Part of my current code concerns
> packing DNA characters: As the alphabet of DNA strings is very small (four
> characters), it seems like a straigt-forward optimization to store each
> character in two bits. A warning: This is my first C project, so please
> don't laugh too much (publicly) if you find strange constructs in my code...
> 
> Although B-trees and hash indexes may be used with my dnaseq type, they
> aren't very interesting for long DNA sequences. I would like to add
> support for adding a suffix array or suffix tree based index to dnaseq
> columns where the user expects long sequences.
> 
> My review of the latest academic work on indexing of long sequences
> indicates that suffix arrays are probably the way to go: Recent advances
> in suffix array algorithms make them more attractive than suffix trees
> (because the take up less space). And since the DNA data I'm currently
> trying to support aren't separated in words, a string B-tree doesn't seem
> to be relevant.
> 
> My first and most immediate goal is to support efficient answering of a
> question like "which rows contain the sequence TTGACCACTTG in column foo?".
> 
> I have to immediate problems:
> 1. The algoriths I've found don't indicate a good way to
>  update index arrays. So I'm thinking of implementing
>  a sort of index-"cluster" which has one sub-index per
>  indexed value. That way, I don't have to worry about
>  updating a large index covering all the indexes values
>  in the column. Is it conceivable to create such an
>  index "cluster"?
> 2. Does someone know of interesting documentation (perhaps
>  in the form of interesting code comments) which I should
>  read, as a basis for creating a non-standard index type
>  in PostgreSQL?


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@postgresql.org so that your
      message can get through to the mailing list cleanly

0
awitney
11/19/2004 12:45:43 PM
Hello Oleg,

On Fri, 2004-11-19 at 15:35 +0300, Oleg Bartunov wrote:

> your project looks very attractive.
 
Thanks.

> In principle, suffix array should be implemented using GiST framework.

But in a previous conversation between the two of us, you wrote that the
GiST wasn't suitable for this problem? I would very much like to use GiST
instead of having to create a whole new index infrastructure (if that's
the alternative).

> String Btree should be very useful for your problem.

I thought that string b-trees were only usable for texts with natural
stops (word boundaries), as opposed to very long, contiguous sequences. Am
I mistaken?

-- 
Greetings from Troels Arvin, Copenhagen, Denmark



---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

0
troels
11/19/2004 1:13:48 PM
On Fri, 19 Nov 2004 14:38:20 +0200, Hannu Krosing wrote:

>> Part of my current code concerns packing DNA characters: As the alphabet 
>> of DNA strings is very small (four characters), it seems like a 
>> straigt-forward optimization to store each character in two bits. 
> 
> My advice would be to get it to work first, oprimize later.

Valid point. However, I needed something rather basic to work on, to get
to know C and to get to know PostgreSQL in a user defined type context.
But if packing proves to be a problem when implementing the interesting
stuff, then thanks&yes: Packing should be an afterthought.

>> My first and most immediate goal is to support efficient answering of a
>> question like "which rows contain the sequence TTGACCACTTG in column foo?".
> 
> If you store your sequences as strings, you may try to use trigrams (or
> modify them to 4,5,6 or 7-grams ;) to get some feel how that works.
> 
> trigram module is in contrib/pg_trgm.

(/me Printing readme.) Thanks.

-- 
Greetings from Troels Arvin, Copenhagen, Denmark



---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

0
troels
11/19/2004 1:23:34 PM
On Fri, 19 Nov 2004, Troels Arvin wrote:

> Hello Oleg,
>
> On Fri, 2004-11-19 at 15:35 +0300, Oleg Bartunov wrote:
>
>> your project looks very attractive.
>
> Thanks.
>
>> In principle, suffix array should be implemented using GiST framework.
>
> But in a previous conversation between the two of us, you wrote that the
> GiST wasn't suitable for this problem? I would very much like to use GiST

it's still true :( some problem with my english grammar.


> instead of having to create a whole new index infrastructure (if that's
> the alternative).
>
>> String Btree should be very useful for your problem.
>
> I thought that string b-trees were only usable for texts with natural
> stops (word boundaries), as opposed to very long, contiguous sequences. Am
> I mistaken?
>

I meant SB-Tree by Paolo Ferragina 
http://citeseer.ist.psu.edu/ferragina98string.html

>

 	Regards,
 		Oleg
_____________________________________________________________
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83

---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

0
oleg
11/19/2004 1:35:06 PM
Troels Arvin <troels@arvin.dk> writes:
> 2. Does someone know of interesting documentation (perhaps
>    in the form of interesting code comments) which I should
>    read, as a basis for creating a non-standard index type
>    in PostgreSQL?

There's not a whole lot :-( and you should definitely expect to have to
read code, not just comments.  You have of course already read
"Interfacing Extensions To Indexes" and "Index Cost Estimation
Functions" in the SGML docs?  After that I'd suggest looking at
src/backend/access/nbtree/README and src/backend/access/hash/README,
and then diving into the code of one or more of the existing index
access methods.  Offhand I think that hash and rtree might be the best
ones to read.  btree is the most "industrial strength" of the four
because it's been worked over and optimized much more carefully than the
others, but by the same token its code is vastly more bulky than the
others; I think you'd have a harder time seeing the forest instead of
the trees if you read btree.  gist and rtree are nearly alike so you
probably don't want to read both of those.

			regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

0
tgl
11/19/2004 3:35:20 PM
On Fri, 2004-11-19 at 10:42, Troels Arvin wrote:
> Hello,
> 
> I'm working on a thesis project where I explore the addition of a
> specialized, bioinformatics-related data type to a RDBMS. My choice of
> RDBMS is PostgreSQL, of course, and I've started by adding a "dnaseq" (DNA
> sequence) data type, using PostgreSQL's APIs for type additions.
> 
> The idea is to try to make it practical and even "attractive" to work with
> DNA sequences in an RDBMS. My starting goal is to make it viable to work
> with sequences in the 50-500 million base range. Some may think that
> RDBMSes and long chunks of data don't match well. My opinion is that the
> increasing power of computers and RDBMS software should at some point make
> it possible to work with DNA sequences in a "normal" data management
> setting like a RDBMS, instead of solely using stand-alone tools and
> stand-alone data files. Anyways, it's an open question if my hypothesis is
> right.
> 

Presumably you know about these?

http://www.ncbi.nih.gov/BLAST/
http://www.ciri.upc.es/cela_pblade/BLAST.htm
http://www.netezza.com/products/bio.cfm

I think you're right, but you'd need to have more than one application
of the data for it to be a convincing argument. Without parallelism,
your best efforts will be to equal the speed of the single-use data
structures used in BLAST.

-- 
Best Regards, Simon Riggs


---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)

0
simon
11/19/2004 3:45:40 PM
Reply:

Similar Artilces:

indexing arrays with arrays
It seems to me that a highly useful syntax for IDL would be something like this: res = randomu(seed,10) start_ind = indgen(5) end_ind = start_ind + 1 extract = res[start_ind:end_ind] In this case, I would envision extract being a 10 element array. Namely, it would be the equivelent of: extract = [res[start_ind[0]:end_ind[0]], res[start_ind[1]:end_ind[1]], res[start_ind[2]:end_ind[2]], etc...] Does anyone else think something like this would be useful? Anyone know how I can bug RSI and request something like this? I couldn't find a "feature request" option, or anything simi...

Adding arrays to arrays...
I know SOME datatype must have it. Heck, I could even make one. Yet ArrayList does not seem to support arraylist.add(elem[]). Anyway, I'm basically trying to compile a list of files within a directory. Well, each directory has subdirectories and so on, so I want something of the form: private LovableArray<file> la = new LovableArray<file>(); private void recursiveCall(directory) { for (Element elem: directory) { if (elem instanceof directoryType) { recursiveCall(directory); } else la.add(elem); } } Wait, that solves my problem.... Anyw...

Question on adding new indexes to Postgresql
Hello, I am posting to ask for some help and suggestions. For a project I am doing in university, I need to add indexing mechanisms to the Postgresql database (R+ tree, bitmap indexes). Version of Postgresql is 7.3.3. I would like to ask how I can integrate the structures and algorithms for the indexes into the Postgresql DB. What are the C interface functions in Postgresql to add indexes? Do I need to handle things like memory buffer management, disk storage management when implementing the indexes? Thanks in advance. Sincerely, Zhen Yang _________________________________...

array value as array index
This code $cn = $ct[$k]; print "<a name='$ct[$k]'>$continentname[$cn]</a>\n"; works, and prints something like <a name='af'>Africa</a> But if I try to simplify it, to print "<a name='$ct[$k]'>$continentname[$ct[$k]]</a>\n"; I get a syntax error unexpected '[', expecting ']' So what is the correct way to write something like $a[$b[$c]] ? I have tried adding extra {} and '' here and there, so far without success. Nick -- Nick Wedd nick@maproom.co.uk On Thu, 25 Jan 200...

Indexing arrays with arrays #2
A couple times I've asked about this. I sometimes would like to be able to index arrays with arrays without using for loops. For intance imagine I have: data = findgen(20) st = [5,2,10] ed = [6,4,15] I would like to do: res = data[st:ed] obviously, IDL doesn't allow this. The last time I posted about this, I got this response: Well, if end_ind is always a constant offset from start_ind, it's easy just to contruct the index vector yourself: t=[end_ind[0]-start_ind[0]+1,n_elements(start_ind)] extract=res[reform(rebin(1#start_ind,t) +rebin(indgen(t[0]),t),t[0]*t[1])] If ...

Vectorized version for forming second array from 1 array and index arrays
I'm looking for a vectorized version of code which will form the sum of a 2-d array ("data" array) elements into a new 2-d array, where I have two auxiliary arrays ("index" arrays) of the same size as my data array, which give the 2-d indexes of the element in the new array into which the data array element is to be accumulated. That is, given data GData, sized (Ni,Nj) and two index arrays Rindex and Dindex with the same size as GData. Rindex and Dindex contain integers, they are the indexes of a third array RDData. I want to populate the elements of RDData with th...

show array of array of array of array...
I'm trying to print an array of (datas and array of (datas and array of (datas and array..... Here is the code: ...

Indexing non-arrays as arrays, no warnings?
I was a bit surprised to find that indexing some non-arrays as if they were arrays does not even raise a Notice message. This works for NULL, integer, and floats at least. (PHP-5.2.1) error_reporting(E_ALL+E_STRICT); $arry = array(1=>1); $nullvar = NULL; $intvar = 1; echo $arry[1]; # Echos 1 echo $arry[2]; # Notice: undefined offset. echo $nullvar[1]; # Echos nothing and no Notice. echo $intvar[0]; # Ditto echo $intvar[1]; # Ditto The manual says that if you convert integer to array, you get an array with one element at [0]. But that isn't what is happe...

Adding arrays to a multidimensional cell array
Hi, I have three arrays X, Y, Z. I need to add them to a three dimensional cell array. A(:,1) = X; A(:,2) = Y; A(:,3) = Z; Is there a way I can add them as cells directly as above? -vidya VS wrote: > Hi, > > I have three arrays X, Y, Z. I need to add them to a three > dimensional cell array. > > A(:,1) = X; > A(:,2) = Y; > A(:,3) = Z; > > Is there a way I can add them as cells directly as above? I do not completely understand your question but this may work: CellArray{i, j, k} = [X,Y,Z]; -Herbert Herbert, Thanks for replying. Basically I want to creat...

2D Array to Index a 3D Array?
Lets say I have a 3D array M (i.e. M(x,y,z)) I also have a 2D array J(x,y), where each element contains the z index of interest in M. Can I use J to index into M without looping (i.e. with a matlab indexing trick of some sort)? i.e. M(:,:,1) = [1,2;3,4]; M(:,:,1) = [21,22;23,24]; J = [1,2; 2,1]; D = M(:,:,J) % This doens't work, I'm looking for something that does ans = [1 22 23 4] Any ideas? Thanks, Chris Chris, There is going to have to be some kind of loop in there. Why are you trying to avoid them. There once was a performance reason to avoid FOR loops, but t...

adding shorter array to longer array
I have two arrays of different lengths. I want the answer M_KC_L=M_I only when time~=time_L. and M_KC_L=M_I+M_G when time=time_L. How can I return the appropriate cell number of M_G(?,:) to add to M_L when their times are equal for m=1:length(M_I) M_KC_L(m,:)=M_I(m,:); if time(m,:)==time_L M_KC_L(m,:)=M_I(m,:)+M_G(???????,:); end end any advice appreciated Anthony On Feb 14, 9:33=A0am, "Anthony " <anthony.cri...@strath.ac.uk> wrote: > I have two arrays of different lengths. I want the answer M_KC_L=3DM_I on= ly when time~=3Dtime_L. and M_KC_L=3DM_I+M_G when time=3Dtim...

How to convert a unit8 into an array and index the array with a pointer?
I need to modify a control model in Simulink so that it stores 3 digit values from 001 to 999 (i.e. in a unit8 variable). I then need to convert the unit8 value into a 3 cell array , so I can point at each cell to send it to a 7 segment LED display. For example, I might store the value '678' as a uint8. I want to put the value '678' into a 3 cell array as '6', '7', and '8'. Then I want to point to the array using an index counter. The index counter will start at 1 and point at the first cell in the array holding the value '6', this can...

Templated array of templates specialized by array index
I've started experimenting with template metaprogramming in a small project of mine. What I'm trying to accomplish is to generate a static array of templated objects that get specialized based on there position in the array. This should be possible but I can't figure out exactly how to accomplish this. The below code should better illustrate what I'm trying to do: template <int I> class Item { int X() { /*do default */ } } template <> class Item<0> { int X() { /* do something special */ } }; template <int N> class Array { // The following...

Inferring array index type from array object
Consider this: S : String := "Hello"; It is possible to iterate over all indices of this array with this construct: for I in S'Range loop ... I would like to declare I as a free variable instead and I would expect some symmetry in the language by doing this: I : S'Range := S'First; But it does not work. Of course, one can do: I : Positive := S'First; But it has the disadvantage of hardcoding the index type and introducing unnecessary coupling in the code. (hint: the problem is not really about Strings, it is a general array question) I have two questions: 1....

Web resources about - Adding a suffix array index - comp.postgresql.hackers

File:Old adding machine.JPG - Wikipedia, the free encyclopedia
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License , Version 1.2 or ...

Ultraviolet Continues To Press Case For Adding Women To Facebook’s Board
Women’s group Ultraviolet continued to press its case for Facebook to add women to its board of directors , releasing a new video stating its ...

Adding Tor support on Android
Since then, a sizeable community of people has grown to use this feature and help us make it more efficient and reliable. We commonly receive ...

Adding Social Context to your content
Using the Facebook Social Context API. The Social Context API lets you discover social connections about objects, people and places.

WordPress Challenges the Facebook Comments Box by Adding Facebook, Twitter Logins to its Comments Widget ...
WordPress just announced that it has added WordPress.com, Twitter and Facebook login options to its own comments widget. Users can also be logged ...

CSS3 : What is the best method for adding 2x images to webpages that will be displayed on the new iPad ...
Answer (1 of 14): WebKit deals in logical pixels and a device pixel ratio to render stuff. It knows nothing about the physical pixels of the ...

Math Dots(Dinosaur):: Connect To The Dot Puzzle / Kids Flashcard Drills for Adding & Subtracting on the ...
Get Math Dots(Dinosaur):: Connect To The Dot Puzzle / Kids Flashcard Drills for Adding & Subtracting on the App Store. See screenshots and ratings, ...

Adding weight - Flickr - Photo Sharing!
Army Spc. David Helton, Company A, 2nd Battalion, 87th Infantry Regiment, puts more weight on the barbell at Combat Outpost Apache in Wardak ...

Senator Obama calls Bush "unpatriotic" for adding trillions to debt www.RightFace.us - YouTube
http://www.RightFace.us In a purely ironic twist then Senator Obama calls President Bush "unpatriotic" for adding trillions to debt. bush added ...

Tax reform: Morrison pours cold water on adding GST to health and education
Treasurer Scott Morrison has pledged Australians will be &quot;winners&quot; &nbsp;when the Turnbull government finally reveals its election ...

Resources last updated: 1/27/2016 12:17:24 PM