How to create a customised results table and add data to it within a macro

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
30 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Stein Rørvik
Thanks for this clarification.
I already suspected that the results columns order was hard-coded for compatibility.

With the new Table.applyMacro function it will be easy to copy columns one by one, so one can append copied columns to the right of the table with new names in the desired order, and thereafter delete the old columns. This way one would get the desired layout without looping through all values.

This example macro seems to work as intended:

run("Blobs (25K)");
run("Set Measurements...", "area mean standard modal min centroid center perimeter bounding fit shape feret's stack display redirect=None decimal=6");
setAutoThreshold("Default");
run("Analyze Particles...", "display clear include in_situ");
Table.applyMacro("FeretMinimum=MinFeret", "Results");
Table.applyMacro("FeretMaximum=Feret", "Results");
Table.applyMacro("FeretAngleCopy=FeretAngle", "Results");
Table.applyMacro("FeretStartX=FeretX", "Results");
Table.applyMacro("FeretStartY=FeretY", "Results");
Table.deleteColumn("MinFeret", "Results");
Table.deleteColumn("Feret", "Results");
Table.deleteColumn("FeretAngle", "Results");
Table.deleteColumn("FeretX", "Results");
Table.deleteColumn("FeretY", "Results");

in this context a new Table.renameColumn(oldName, newName, tableName) command could be useful?
For example, Table.renameColumn ("FeretAngleCopy", "FeretAngle", "Results");

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Michael Schmid
Sent: 10. april 2018 15:45
To: [hidden email]
Subject: Re: How to create a customised results table and add data to it within a macro

Hi Stein,

the standard headings of the ResultsTable are hardcoded. Unfortunately one cannot easily change this since it would break user plugins that access them by their number. This is also the reason for the non-intuitive ordering of the Feret items; "Feret" (min Feret diameter) was in ImageJ since the early days; the others were added later, when a few additional columns were already in between.

(In principle this could be changed, but it would be some effort; it would require a translation table from the old numbers to the corresponding headings).

Scaled Z:
Yes, you can have a macro for this like, e.g.
   Table.applyMacro("x=0; y=0; Z=Slice-1; toScaled(x,y,Z);"); (It assumes that the current image window has the same calibration as the Results table; it also accounts for any offset of the origin in z direction).


Michael
________________________________________________________________
On 09/04/2018 22:32, Stein Rørvik wrote:

> Thank you for this clarification; I was not aware of this difference between string-based and numerical tables.
>
> Could it still make sense with a Table.setHeader(<tabdelimited string>) command for newly created numerical tables?
>
> This would then create an empty table with the desired column headers in the desired order; instead of new columns just appearing in an arbitrary order at first use. One thing that annoys me with the existing Results table is that there is no Z column for calibrated Z positions, and the Feret shape parameters are not placed in any logical order. If one could pre-set the column order, that would fix this easily. For example, MinFeret, Feret, FeretAngle, FeretX, FeretY. Also, Table.applyMacro("Z=Slice*<MicronsPerPixelZ>","Result") would easily add the missing Z coordinate column.
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Michael Schmid
> Sent: 09. april 2018 19:56
> To: [hidden email]
> Subject: Re: How to create a customised results table and add data to
> it within a macro
>
> Hi Stein,
>
> a few remarks on tables:
>
> Beware that there are two different types of tables in ImageJ:
>
> (1) Tables like the ResultsTable, the one you get from Plots with "List", and tables with contents filled in by the new macro Table...
> commands are essentially numeric (there is a predefined "label" column, which must be the first one, this one is text-only).
>
> One can have non-numeric (String) values in other columns, then Table.get(colName, row) will give you NaN (not a number) and you need Table.getString(colName, row). But one would not do the for numbers; and applyMacro will work with the numeric value.
>
> For this type of tables, the column headers are fixed. The underlying data structure currently does not support renaming column headers.
> The column headers are simply created by assigning values to columns (by column name); if a column does not exist, it is created.
>
> (2) On the other hand, if you create a table by macro print commands, it is a pure list of Strings, with no numeric values behind it. You can't do any calculations with it, and the Table... commands don't work with it. The purpose of this type of table is only displaying values and saving or copying to the clipboard.
>
>
> This means that all commands using Strings like
> "Table.addRow(<tabdelimited string>)" for numeric tables would be
> problematic: It would require conversion of text to numbers; note that
> number>text>number conversion induces a loss of precision (unless the
> data are integer or the number of digits is very large).
>
> So it would be better to copy numeric values as such, not via String
> manipulation.
>
>
> Michael
> ________________________________________________________________
>
>
> On 09/04/2018 17:07, Stein Rørvik wrote:
>> Thanks, exactly what I need. These functions will be very useful for manipulating an existing results table.
>> I already tried Table.applyMacro("Results", "DoubleArea=Area*2") with daily build 1.52a39 and it worked as expected.
>>
>> Today I use a similar approach as Timothy outlined: I create a new table, read the results from the old one, and use the getResult / setResult functions to create a new table. I also sometimes split lines and use the print(tablename, ... ) syntax to print tab-delimited headers and rows with the new table; this approach is much faster.
>>
>> To add to the below list, I think the functions
>> Table.setHeader(<tabdelimited string>) and Table.addRow(<tabdelimited
>> string>), Table.updateRow(<rowindex>, <tabdelimited string>) would be useful for writing contents in batch.
>>
>> Also, perhaps Table.headings() could be complemented with
>> Table.rows() to return all the rows (except the header) as
>> tab-delimited strings concatenated by \n as well as Table.content()
>> to return everything as a string (headers plus all the rows)
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Michael Schmid
>> Sent: 09. april 2018 16:33
>> To: [hidden email]
>> Subject: Re: How to create a customised results table and add data to
>> it within a macro
>>
>> Hi Stein,
>>
>> the Table.* functions are currently under development; they are in the daily build only.
>>
>> The list of currently implemented commands is in the Release notes:
>> https://github.com/imagej/imagej1/blob/master/release-notes.html
>>
>>       Table.create() - opens a new table
>>       Table.size() - number of rows in the table
>>       Table.title() - title of the current table
>>       Table.headings() - column headings as a tab-delimited string
>>       Table.get(columnName, rowIndex) - returns a numeric value
>>       Table.getString(columnName, rowIndex) - returns a string value
>>       Table.set(columnName, rowIndex, value) - sets numeric or string value
>>       Table.update() - updates table window
>>       Table.reset() - resets (clears) the table
>>       Table.applyMacro(macro) - applies macro code to table
>>       Table.rename(title1, title2) - renames a table
>>       Table.save(filePath) - saves the table
>>       Table.deleteRows(index1, index2) - deletes specified rows
>>       Table.deleteColumn(columnName) - deletes specified column
>>       Table.hideRowNumbers() - disables display of row numbers
>>
>>
>> You can also specify the title of a table, this argument goes last.
>>
>> So e.g. the macro I had suggested last week has to be changed to:
>>      myName = "01.txt";
>>      Table.applyMacro("_='"+myName+" '+_", "Results");
>>
>> If no title is given, the commands refer the main "Results" table or to the current foreground window (if it has a table).
>> Inside the macro of 'apply macro', if no title is given, the Table commands refer to the table processed by the macro.
>>
>> Note that these commands are still experimental. Things may still change, so you may have to adapt your macros in case of changes!
>>
>>
>> Michael
>> ________________________________________________________________
>> On 09/04/2018 12:43, Stein Rørvik wrote:
>>> Table.applyMacro seems very useful, but I cannot see it documented
>>> in the https://imagej.nih.gov/ij/developer/macro/functions.html webpage?
>>> Are there any other Table.* functions implemented in ImageJ ?
>>>
>>> Stein
>>>
>>> -----Original Message-----
>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>> Of Michael Schmid
>>> Sent: 28. mars 2018 18:51
>>> To: [hidden email]
>>> Subject: Re: How to create a customised results table and add data
>>> to it within a macro
>>>
>>> Hi Herbie & dschones,
>>>
>>> the first column with the 'Y123' etc. is the "row label", not a standard column. In a macro, you can get and set it with
>>>       getResultLabel(row) and
>>>       setResult("Label", row, string).
>>>
>>> With today's daily build (Help>Update ImageJ), you can also modify it without a loop over all rows:
>>>
>>>       myName = "01.txt";
>>>       Table.applyMacro("Results", "_='"+myName+" '+_");
>>>
>>> (Since the "row label" column has an empty name in this case, its
>>> name is mapped to an underscore as variable name.)
>>>
>>> This gives you a space, not a tab between the '01.txt' and the 'Y123'
>>>
>>> In principle, one could add a tab, but that would shift all columns to the right. The headers won't get shifted, and I don't think that one could also shift the headers.
>>>
>>> By the way, you can have Strings and numbers mixed in one column, but it won't help you here. E.g., if there is a column "X123", this works:
>>>       setResult("X123", 1, "hello");
>>>
>>>
>>> Michael
>>> ________________________________________________________________
>>>
>>>
>>> On 28/03/2018 17:58, Herbie wrote:
>>>> Would it be ok to have the filename in a new first column:
>>>>
>>>>                   X936      X937      X938 01.txt  Y516 01.txt 
>>>> Y517 01.txt  Y518 01.txt  Y519 01.txt  Y520
>>>>
>>>> 02.txt  Y516
>>>> 02.txt  Y517
>>>> 02.txt  Y518
>>>> 02.txt  Y519
>>>> 02.txt  Y520
>>>>
>>>> or something like:
>>>>
>>>>          X936_01.txt X937_01.txt X938_01.txt X936_02.txt
>>>> X937_02.txt X938_02.txt (watch for line breaks)
>>>> Y516
>>>> Y517
>>>> Y518
>>>> Y519
>>>> Y520
>>>>
>>>> or something along these lines:
>>>>
>>>> 01.txt  X936  X937  X938  02.txt  X936  X937  X938
>>>> Y516                      Y516
>>>> Y517                      Y517
>>>> Y518                      Y518
>>>> Y519                      Y519
>>>> Y520                      Y520
>>>>
>>>>
>>>> AFAIK it is not possible to have numbers and letters in the same
>>>> column except in the column headers.
>>>>
>>>> Please be aware of the fact that ImageJ is not a spread-sheet
>>>> program, but serves for image processing in the first place.
>>>>
>>>> Regards
>>>>
>>>> Herbie
>>>>
>>>> ::::::::::::::::::::::::::::::::::::::
>>>> Am 28.03.18 um 17:35 schrieb dschones:
>>>>> Hi Herbie,
>>>>>
>>>>> I'll just leave the generation of the results as they are and give
>>>>> the reference to the way I found getting the filename into first
>>>>> line of the results.txt
>>>>>
>>>>> https://askubuntu.com/questions/1019727/inserting-file-name-in-fir
>>>>> st-line-of-merged-txt-files
>>>>>
>>>>> <https://askubuntu.com/questions/1019727/inserting-file-name-in-fi
>>>>> rst-line-of-merged-txt-files>
>>>>>
>>>>>
>>>>> Good afternoon! :)
>>>>
>>>> --
>>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>> --
>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>>
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>> --
>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>>
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Wayne Rasband-2
> On Apr 12, 2018, at 7:31 AM, Stein Rørvik <[hidden email]> wrote:
>
> Thanks for this clarification.
> I already suspected that the results columns order was hard-coded for compatibility.
>
> With the new Table.applyMacro function it will be easy to copy columns one by one, so one can append copied columns to the right of the table with new names in the desired order, and thereafter delete the old columns. This way one would get the desired layout without looping through all values.
>
> This example macro seems to work as intended:

The latest daily build (1.52a47) adds a Table.renameColumn(oldName, newName) function. Here is an updated version of the example macro that uses it:

  run("Blobs (25K)");
  run("Set Measurements...", "area mean centroid feret's");
  setAutoThreshold("Default");
  Table.reset("Results");
  run("Analyze Particles...", "display include in_situ");
  code = "FeretMinimum=MinFeret; FeretMaximum=Feret;"
    +"FeretAngleCopy=FeretAngle; FeretStartX=FeretX;"
    +"FeretStartY=FeretY";
  Table.applyMacro(code);
  Table.deleteColumn("MinFeret");
  Table.deleteColumn("Feret");
  Table.deleteColumn("FeretAngle");
  Table.deleteColumn("FeretX");
  Table.deleteColumn("FeretY");
  Table.renameColumn("FeretAngleCopy", "FeretAngle");
  Table.update;

The “Results” arguments in the original version are not needed since Table.reset("Results”) makes “Results” the current (active) table. All five columns are copied in one call to Table.applyMacro() since this is more efficient. The Table.update call is needed since Table.deleteColumn() and Table.renameColumn() do not update the display.

Here is a list of the currently available Table.* functions:

   Table.create(table) - opens a new table
   Table.reset(table) - resets (clears) the table
   Table.size() - number of rows in the table
   Table.title() - title of the current table
   Table.headings() - column headings as a tab-delimited string
   Table.get(columnName, rowIndex) - returns a numeric value
   Table.getString(columnName, rowIndex) - returns a string value
   Table.set(columnName, rowIndex, value) - sets numeric or string value
   Table.update() - updates table window
   Table.applyMacro(macro) - applies macro code to table
   Table.rename(title1, title2) - renames a table
   Table.save(filePath) - saves the table
   Table.deleteRows(index1, index2) - deletes specified rows
   Table.renameColumn(oldName, newName) - renames a column
   Table.deleteColumn(columnName) - deletes specified column
   Table.showRowNumbers(boolean) - enable/disable row numbers

And here are more example macros:

   http://wsr.imagej.net/macros/Sine_Cosine_Table2.txt
   http://wsr.imagej.net/macros/Make_Duplicate_Table.txt
   http://wsr.imagej.net/macros/Access_Plot_Data.txt
   http://wsr.imagej.net/macros/Access_Summary_Table.txt
   http://wsr.imagej.net/macros/Access_Overlay_Elements_Table.txt

-wayne




>

> run("Blobs (25K)");
> run("Set Measurements...", "area mean standard modal min centroid center perimeter bounding fit shape feret's stack display redirect=None decimal=6");
> setAutoThreshold("Default");
> run("Analyze Particles...", "display clear include in_situ");
> Table.applyMacro("FeretMinimum=MinFeret", "Results");
> Table.applyMacro("FeretMaximum=Feret", "Results");
> Table.applyMacro("FeretAngleCopy=FeretAngle", "Results");
> Table.applyMacro("FeretStartX=FeretX", "Results");
> Table.applyMacro("FeretStartY=FeretY", "Results");
> Table.deleteColumn("MinFeret", "Results");
> Table.deleteColumn("Feret", "Results");
> Table.deleteColumn("FeretAngle", "Results");
> Table.deleteColumn("FeretX", "Results");
> Table.deleteColumn("FeretY", "Results");
>
> in this context a new Table.renameColumn(oldName, newName, tableName) command could be useful?
> For example, Table.renameColumn ("FeretAngleCopy", "FeretAngle", "Results");
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Michael Schmid
> Sent: 10. april 2018 15:45
> To: [hidden email]
> Subject: Re: How to create a customised results table and add data to it within a macro
>
> Hi Stein,
>
> the standard headings of the ResultsTable are hardcoded. Unfortunately one cannot easily change this since it would break user plugins that access them by their number. This is also the reason for the non-intuitive ordering of the Feret items; "Feret" (min Feret diameter) was in ImageJ since the early days; the others were added later, when a few additional columns were already in between.
>
> (In principle this could be changed, but it would be some effort; it would require a translation table from the old numbers to the corresponding headings).
>
> Scaled Z:
> Yes, you can have a macro for this like, e.g.
>   Table.applyMacro("x=0; y=0; Z=Slice-1; toScaled(x,y,Z);"); (It assumes that the current image window has the same calibration as the Results table; it also accounts for any offset of the origin in z direction).
>
>
> Michael
> ________________________________________________________________
> On 09/04/2018 22:32, Stein Rørvik wrote:
>> Thank you for this clarification; I was not aware of this difference between string-based and numerical tables.
>>
>> Could it still make sense with a Table.setHeader(<tabdelimited string>) command for newly created numerical tables?
>>
>> This would then create an empty table with the desired column headers in the desired order; instead of new columns just appearing in an arbitrary order at first use. One thing that annoys me with the existing Results table is that there is no Z column for calibrated Z positions, and the Feret shape parameters are not placed in any logical order. If one could pre-set the column order, that would fix this easily. For example, MinFeret, Feret, FeretAngle, FeretX, FeretY. Also, Table.applyMacro("Z=Slice*<MicronsPerPixelZ>","Result") would easily add the missing Z coordinate column.
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Michael Schmid
>> Sent: 09. april 2018 19:56
>> To: [hidden email]
>> Subject: Re: How to create a customised results table and add data to
>> it within a macro
>>
>> Hi Stein,
>>
>> a few remarks on tables:
>>
>> Beware that there are two different types of tables in ImageJ:
>>
>> (1) Tables like the ResultsTable, the one you get from Plots with "List", and tables with contents filled in by the new macro Table...
>> commands are essentially numeric (there is a predefined "label" column, which must be the first one, this one is text-only).
>>
>> One can have non-numeric (String) values in other columns, then Table.get(colName, row) will give you NaN (not a number) and you need Table.getString(colName, row). But one would not do the for numbers; and applyMacro will work with the numeric value.
>>
>> For this type of tables, the column headers are fixed. The underlying data structure currently does not support renaming column headers.
>> The column headers are simply created by assigning values to columns (by column name); if a column does not exist, it is created.
>>
>> (2) On the other hand, if you create a table by macro print commands, it is a pure list of Strings, with no numeric values behind it. You can't do any calculations with it, and the Table... commands don't work with it. The purpose of this type of table is only displaying values and saving or copying to the clipboard.
>>
>>
>> This means that all commands using Strings like
>> "Table.addRow(<tabdelimited string>)" for numeric tables would be
>> problematic: It would require conversion of text to numbers; note that
>> number>text>number conversion induces a loss of precision (unless the
>> data are integer or the number of digits is very large).
>>
>> So it would be better to copy numeric values as such, not via String
>> manipulation.
>>
>>
>> Michael
>> ________________________________________________________________
>>
>>
>> On 09/04/2018 17:07, Stein Rørvik wrote:
>>> Thanks, exactly what I need. These functions will be very useful for manipulating an existing results table.
>>> I already tried Table.applyMacro("Results", "DoubleArea=Area*2") with daily build 1.52a39 and it worked as expected.
>>>
>>> Today I use a similar approach as Timothy outlined: I create a new table, read the results from the old one, and use the getResult / setResult functions to create a new table. I also sometimes split lines and use the print(tablename, ... ) syntax to print tab-delimited headers and rows with the new table; this approach is much faster.
>>>
>>> To add to the below list, I think the functions
>>> Table.setHeader(<tabdelimited string>) and Table.addRow(<tabdelimited
>>> string>), Table.updateRow(<rowindex>, <tabdelimited string>) would be useful for writing contents in batch.
>>>
>>> Also, perhaps Table.headings() could be complemented with
>>> Table.rows() to return all the rows (except the header) as
>>> tab-delimited strings concatenated by \n as well as Table.content()
>>> to return everything as a string (headers plus all the rows)
>>>
>>> Stein
>>>
>>> -----Original Message-----
>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>>> Michael Schmid
>>> Sent: 09. april 2018 16:33
>>> To: [hidden email]
>>> Subject: Re: How to create a customised results table and add data to
>>> it within a macro
>>>
>>> Hi Stein,
>>>
>>> the Table.* functions are currently under development; they are in the daily build only.
>>>
>>> The list of currently implemented commands is in the Release notes:
>>> https://github.com/imagej/imagej1/blob/master/release-notes.html
>>>
>>>      Table.create() - opens a new table
>>>      Table.size() - number of rows in the table
>>>      Table.title() - title of the current table
>>>      Table.headings() - column headings as a tab-delimited string
>>>      Table.get(columnName, rowIndex) - returns a numeric value
>>>      Table.getString(columnName, rowIndex) - returns a string value
>>>      Table.set(columnName, rowIndex, value) - sets numeric or string value
>>>      Table.update() - updates table window
>>>      Table.reset() - resets (clears) the table
>>>      Table.applyMacro(macro) - applies macro code to table
>>>      Table.rename(title1, title2) - renames a table
>>>      Table.save(filePath) - saves the table
>>>      Table.deleteRows(index1, index2) - deletes specified rows
>>>      Table.deleteColumn(columnName) - deletes specified column
>>>      Table.hideRowNumbers() - disables display of row numbers
>>>
>>>
>>> You can also specify the title of a table, this argument goes last.
>>>
>>> So e.g. the macro I had suggested last week has to be changed to:
>>>     myName = "01.txt";
>>>     Table.applyMacro("_='"+myName+" '+_", "Results");
>>>
>>> If no title is given, the commands refer the main "Results" table or to the current foreground window (if it has a table).
>>> Inside the macro of 'apply macro', if no title is given, the Table commands refer to the table processed by the macro.
>>>
>>> Note that these commands are still experimental. Things may still change, so you may have to adapt your macros in case of changes!
>>>
>>>
>>> Michael
>>> ________________________________________________________________
>>> On 09/04/2018 12:43, Stein Rørvik wrote:
>>>> Table.applyMacro seems very useful, but I cannot see it documented
>>>> in the https://imagej.nih.gov/ij/developer/macro/functions.html webpage?
>>>> Are there any other Table.* functions implemented in ImageJ ?
>>>>
>>>> Stein
>>>>
>>>> -----Original Message-----
>>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>>> Of Michael Schmid
>>>> Sent: 28. mars 2018 18:51
>>>> To: [hidden email]
>>>> Subject: Re: How to create a customised results table and add data
>>>> to it within a macro
>>>>
>>>> Hi Herbie & dschones,
>>>>
>>>> the first column with the 'Y123' etc. is the "row label", not a standard column. In a macro, you can get and set it with
>>>>      getResultLabel(row) and
>>>>      setResult("Label", row, string).
>>>>
>>>> With today's daily build (Help>Update ImageJ), you can also modify it without a loop over all rows:
>>>>
>>>>      myName = "01.txt";
>>>>      Table.applyMacro("Results", "_='"+myName+" '+_");
>>>>
>>>> (Since the "row label" column has an empty name in this case, its
>>>> name is mapped to an underscore as variable name.)
>>>>
>>>> This gives you a space, not a tab between the '01.txt' and the 'Y123'
>>>>
>>>> In principle, one could add a tab, but that would shift all columns to the right. The headers won't get shifted, and I don't think that one could also shift the headers.
>>>>
>>>> By the way, you can have Strings and numbers mixed in one column, but it won't help you here. E.g., if there is a column "X123", this works:
>>>>      setResult("X123", 1, "hello");
>>>>
>>>>
>>>> Michael
>>>> ________________________________________________________________

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Stein Rørvik
Thank you!

The new Table.applyMacro function makes it a lot easier to reorganize the results column-wise in bulk and create new columns with calculated data. Perhaps the below example macro or something similar could be uploaded to the macro directory of the website?

I also wonder, in the code section of the macro, is the row number accessible as a predefined variable or function so that it can be used in the Table.applyMacro calculations?

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Wayne Rasband
Sent: 13. april 2018 00:26
To: [hidden email]
Subject: Re: How to create a customised results table and add data to it within a macro

> On Apr 12, 2018, at 7:31 AM, Stein Rørvik <[hidden email]> wrote:
>
> Thanks for this clarification.
> I already suspected that the results columns order was hard-coded for compatibility.
>
> With the new Table.applyMacro function it will be easy to copy columns one by one, so one can append copied columns to the right of the table with new names in the desired order, and thereafter delete the old columns. This way one would get the desired layout without looping through all values.
>
> This example macro seems to work as intended:

The latest daily build (1.52a47) adds a Table.renameColumn(oldName, newName) function. Here is an updated version of the example macro that uses it:

  run("Blobs (25K)");
  run("Set Measurements...", "area mean centroid feret's");
  setAutoThreshold("Default");
  Table.reset("Results");
  run("Analyze Particles...", "display include in_situ");
  code = "FeretMinimum=MinFeret; FeretMaximum=Feret;"
    +"FeretAngleCopy=FeretAngle; FeretStartX=FeretX;"
    +"FeretStartY=FeretY";
  Table.applyMacro(code);
  Table.deleteColumn("MinFeret");
  Table.deleteColumn("Feret");
  Table.deleteColumn("FeretAngle");
  Table.deleteColumn("FeretX");
  Table.deleteColumn("FeretY");
  Table.renameColumn("FeretAngleCopy", "FeretAngle");
  Table.update;

The “Results” arguments in the original version are not needed since Table.reset("Results”) makes “Results” the current (active) table. All five columns are copied in one call to Table.applyMacro() since this is more efficient. The Table.update call is needed since Table.deleteColumn() and Table.renameColumn() do not update the display.

Here is a list of the currently available Table.* functions:

   Table.create(table) - opens a new table
   Table.reset(table) - resets (clears) the table
   Table.size() - number of rows in the table
   Table.title() - title of the current table
   Table.headings() - column headings as a tab-delimited string
   Table.get(columnName, rowIndex) - returns a numeric value
   Table.getString(columnName, rowIndex) - returns a string value
   Table.set(columnName, rowIndex, value) - sets numeric or string value
   Table.update() - updates table window
   Table.applyMacro(macro) - applies macro code to table
   Table.rename(title1, title2) - renames a table
   Table.save(filePath) - saves the table
   Table.deleteRows(index1, index2) - deletes specified rows
   Table.renameColumn(oldName, newName) - renames a column
   Table.deleteColumn(columnName) - deletes specified column
   Table.showRowNumbers(boolean) - enable/disable row numbers

And here are more example macros:

   http://wsr.imagej.net/macros/Sine_Cosine_Table2.txt
   http://wsr.imagej.net/macros/Make_Duplicate_Table.txt
   http://wsr.imagej.net/macros/Access_Plot_Data.txt
   http://wsr.imagej.net/macros/Access_Summary_Table.txt
   http://wsr.imagej.net/macros/Access_Overlay_Elements_Table.txt

-wayne




>

> run("Blobs (25K)");
> run("Set Measurements...", "area mean standard modal min centroid
> center perimeter bounding fit shape feret's stack display
> redirect=None decimal=6"); setAutoThreshold("Default"); run("Analyze
> Particles...", "display clear include in_situ");
> Table.applyMacro("FeretMinimum=MinFeret", "Results");
> Table.applyMacro("FeretMaximum=Feret", "Results");
> Table.applyMacro("FeretAngleCopy=FeretAngle", "Results");
> Table.applyMacro("FeretStartX=FeretX", "Results");
> Table.applyMacro("FeretStartY=FeretY", "Results");
> Table.deleteColumn("MinFeret", "Results"); Table.deleteColumn("Feret",
> "Results"); Table.deleteColumn("FeretAngle", "Results");
> Table.deleteColumn("FeretX", "Results"); Table.deleteColumn("FeretY",
> "Results");
>
> in this context a new Table.renameColumn(oldName, newName, tableName) command could be useful?
> For example, Table.renameColumn ("FeretAngleCopy", "FeretAngle",
> "Results");
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Michael Schmid
> Sent: 10. april 2018 15:45
> To: [hidden email]
> Subject: Re: How to create a customised results table and add data to
> it within a macro
>
> Hi Stein,
>
> the standard headings of the ResultsTable are hardcoded. Unfortunately one cannot easily change this since it would break user plugins that access them by their number. This is also the reason for the non-intuitive ordering of the Feret items; "Feret" (min Feret diameter) was in ImageJ since the early days; the others were added later, when a few additional columns were already in between.
>
> (In principle this could be changed, but it would be some effort; it would require a translation table from the old numbers to the corresponding headings).
>
> Scaled Z:
> Yes, you can have a macro for this like, e.g.
>   Table.applyMacro("x=0; y=0; Z=Slice-1; toScaled(x,y,Z);"); (It assumes that the current image window has the same calibration as the Results table; it also accounts for any offset of the origin in z direction).
>
>
> Michael
> ________________________________________________________________
> On 09/04/2018 22:32, Stein Rørvik wrote:
>> Thank you for this clarification; I was not aware of this difference between string-based and numerical tables.
>>
>> Could it still make sense with a Table.setHeader(<tabdelimited string>) command for newly created numerical tables?
>>
>> This would then create an empty table with the desired column headers in the desired order; instead of new columns just appearing in an arbitrary order at first use. One thing that annoys me with the existing Results table is that there is no Z column for calibrated Z positions, and the Feret shape parameters are not placed in any logical order. If one could pre-set the column order, that would fix this easily. For example, MinFeret, Feret, FeretAngle, FeretX, FeretY. Also, Table.applyMacro("Z=Slice*<MicronsPerPixelZ>","Result") would easily add the missing Z coordinate column.
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Michael Schmid
>> Sent: 09. april 2018 19:56
>> To: [hidden email]
>> Subject: Re: How to create a customised results table and add data to
>> it within a macro
>>
>> Hi Stein,
>>
>> a few remarks on tables:
>>
>> Beware that there are two different types of tables in ImageJ:
>>
>> (1) Tables like the ResultsTable, the one you get from Plots with "List", and tables with contents filled in by the new macro Table...
>> commands are essentially numeric (there is a predefined "label" column, which must be the first one, this one is text-only).
>>
>> One can have non-numeric (String) values in other columns, then Table.get(colName, row) will give you NaN (not a number) and you need Table.getString(colName, row). But one would not do the for numbers; and applyMacro will work with the numeric value.
>>
>> For this type of tables, the column headers are fixed. The underlying data structure currently does not support renaming column headers.
>> The column headers are simply created by assigning values to columns (by column name); if a column does not exist, it is created.
>>
>> (2) On the other hand, if you create a table by macro print commands, it is a pure list of Strings, with no numeric values behind it. You can't do any calculations with it, and the Table... commands don't work with it. The purpose of this type of table is only displaying values and saving or copying to the clipboard.
>>
>>
>> This means that all commands using Strings like
>> "Table.addRow(<tabdelimited string>)" for numeric tables would be
>> problematic: It would require conversion of text to numbers; note
>> that
>> number>text>number conversion induces a loss of precision (unless the
>> data are integer or the number of digits is very large).
>>
>> So it would be better to copy numeric values as such, not via String
>> manipulation.
>>
>>
>> Michael
>> ________________________________________________________________
>>
>>
>> On 09/04/2018 17:07, Stein Rørvik wrote:
>>> Thanks, exactly what I need. These functions will be very useful for manipulating an existing results table.
>>> I already tried Table.applyMacro("Results", "DoubleArea=Area*2") with daily build 1.52a39 and it worked as expected.
>>>
>>> Today I use a similar approach as Timothy outlined: I create a new table, read the results from the old one, and use the getResult / setResult functions to create a new table. I also sometimes split lines and use the print(tablename, ... ) syntax to print tab-delimited headers and rows with the new table; this approach is much faster.
>>>
>>> To add to the below list, I think the functions
>>> Table.setHeader(<tabdelimited string>) and
>>> Table.addRow(<tabdelimited
>>> string>), Table.updateRow(<rowindex>, <tabdelimited string>) would be useful for writing contents in batch.
>>>
>>> Also, perhaps Table.headings() could be complemented with
>>> Table.rows() to return all the rows (except the header) as
>>> tab-delimited strings concatenated by \n as well as Table.content()
>>> to return everything as a string (headers plus all the rows)
>>>
>>> Stein
>>>
>>> -----Original Message-----
>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>> Of Michael Schmid
>>> Sent: 09. april 2018 16:33
>>> To: [hidden email]
>>> Subject: Re: How to create a customised results table and add data
>>> to it within a macro
>>>
>>> Hi Stein,
>>>
>>> the Table.* functions are currently under development; they are in the daily build only.
>>>
>>> The list of currently implemented commands is in the Release notes:
>>> https://github.com/imagej/imagej1/blob/master/release-notes.html
>>>
>>>      Table.create() - opens a new table
>>>      Table.size() - number of rows in the table
>>>      Table.title() - title of the current table
>>>      Table.headings() - column headings as a tab-delimited string
>>>      Table.get(columnName, rowIndex) - returns a numeric value
>>>      Table.getString(columnName, rowIndex) - returns a string value
>>>      Table.set(columnName, rowIndex, value) - sets numeric or string value
>>>      Table.update() - updates table window
>>>      Table.reset() - resets (clears) the table
>>>      Table.applyMacro(macro) - applies macro code to table
>>>      Table.rename(title1, title2) - renames a table
>>>      Table.save(filePath) - saves the table
>>>      Table.deleteRows(index1, index2) - deletes specified rows
>>>      Table.deleteColumn(columnName) - deletes specified column
>>>      Table.hideRowNumbers() - disables display of row numbers
>>>
>>>
>>> You can also specify the title of a table, this argument goes last.
>>>
>>> So e.g. the macro I had suggested last week has to be changed to:
>>>     myName = "01.txt";
>>>     Table.applyMacro("_='"+myName+" '+_", "Results");
>>>
>>> If no title is given, the commands refer the main "Results" table or to the current foreground window (if it has a table).
>>> Inside the macro of 'apply macro', if no title is given, the Table commands refer to the table processed by the macro.
>>>
>>> Note that these commands are still experimental. Things may still change, so you may have to adapt your macros in case of changes!
>>>
>>>
>>> Michael
>>> ________________________________________________________________
>>> On 09/04/2018 12:43, Stein Rørvik wrote:
>>>> Table.applyMacro seems very useful, but I cannot see it documented
>>>> in the https://imagej.nih.gov/ij/developer/macro/functions.html webpage?
>>>> Are there any other Table.* functions implemented in ImageJ ?
>>>>
>>>> Stein
>>>>
>>>> -----Original Message-----
>>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>>> Of Michael Schmid
>>>> Sent: 28. mars 2018 18:51
>>>> To: [hidden email]
>>>> Subject: Re: How to create a customised results table and add data
>>>> to it within a macro
>>>>
>>>> Hi Herbie & dschones,
>>>>
>>>> the first column with the 'Y123' etc. is the "row label", not a standard column. In a macro, you can get and set it with
>>>>      getResultLabel(row) and
>>>>      setResult("Label", row, string).
>>>>
>>>> With today's daily build (Help>Update ImageJ), you can also modify it without a loop over all rows:
>>>>
>>>>      myName = "01.txt";
>>>>      Table.applyMacro("Results", "_='"+myName+" '+_");
>>>>
>>>> (Since the "row label" column has an empty name in this case, its
>>>> name is mapped to an underscore as variable name.)
>>>>
>>>> This gives you a space, not a tab between the '01.txt' and the 'Y123'
>>>>
>>>> In principle, one could add a tab, but that would shift all columns to the right. The headers won't get shifted, and I don't think that one could also shift the headers.
>>>>
>>>> By the way, you can have Strings and numbers mixed in one column, but it won't help you here. E.g., if there is a column "X123", this works:
>>>>      setResult("X123", 1, "hello");
>>>>
>>>>
>>>> Michael
>>>> ________________________________________________________________

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Stein Rørvik
In reply to this post by Wayne Rasband-2
Another request:

Table.reset(table) selects and clears an existing table;
it would be useful to select an existing table without clearing it.
Could a Table.select(table) function for doing this be added as well?

We have a Table.save(filePath) command;
Table.load(filePath) could also be useful.
This would then create a new table based on the content of a file.

I also wonder how to access tables that are not shown.
The example macros you link to all uses commands that generate tables, e.g. run("List Elements");
How can I access tables that are not shown by default, e.g. the Histogram or LUT tables?

Here is an example of something I often need to do, calculating cumulative histograms:

run("Blobs (25K)");
run("Histogram");
//how can we now set the Histogram as active table?
sumCumulative = 0;
for (i=0; i<Table.size; i++) {
        v = Table.get("value", i);
        c = Table.get("count", i);
        sumCumulative += c;
        Table.set("cumulative", i, sumCumulative);
}
Table.update;

Perhaps there could be a parameter to run("Histogram", "list") and run("Show LUT", "list")
to show the corresponding tables you get when pressing the "List" button in these?

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Wayne Rasband
Sent: 13. april 2018 00:26
To: [hidden email]
Subject: Re: How to create a customised results table and add data to it within a macro

> On Apr 12, 2018, at 7:31 AM, Stein Rørvik <[hidden email]> wrote:
>
> Thanks for this clarification.
> I already suspected that the results columns order was hard-coded for compatibility.
>
> With the new Table.applyMacro function it will be easy to copy columns one by one, so one can append copied columns to the right of the table with new names in the desired order, and thereafter delete the old columns. This way one would get the desired layout without looping through all values.
>
> This example macro seems to work as intended:

The latest daily build (1.52a47) adds a Table.renameColumn(oldName, newName) function. Here is an updated version of the example macro that uses it:

  run("Blobs (25K)");
  run("Set Measurements...", "area mean centroid feret's");
  setAutoThreshold("Default");
  Table.reset("Results");
  run("Analyze Particles...", "display include in_situ");
  code = "FeretMinimum=MinFeret; FeretMaximum=Feret;"
    +"FeretAngleCopy=FeretAngle; FeretStartX=FeretX;"
    +"FeretStartY=FeretY";
  Table.applyMacro(code);
  Table.deleteColumn("MinFeret");
  Table.deleteColumn("Feret");
  Table.deleteColumn("FeretAngle");
  Table.deleteColumn("FeretX");
  Table.deleteColumn("FeretY");
  Table.renameColumn("FeretAngleCopy", "FeretAngle");
  Table.update;

The “Results” arguments in the original version are not needed since Table.reset("Results”) makes “Results” the current (active) table. All five columns are copied in one call to Table.applyMacro() since this is more efficient. The Table.update call is needed since Table.deleteColumn() and Table.renameColumn() do not update the display.

Here is a list of the currently available Table.* functions:

   Table.create(table) - opens a new table
   Table.reset(table) - resets (clears) the table
   Table.size() - number of rows in the table
   Table.title() - title of the current table
   Table.headings() - column headings as a tab-delimited string
   Table.get(columnName, rowIndex) - returns a numeric value
   Table.getString(columnName, rowIndex) - returns a string value
   Table.set(columnName, rowIndex, value) - sets numeric or string value
   Table.update() - updates table window
   Table.applyMacro(macro) - applies macro code to table
   Table.rename(title1, title2) - renames a table
   Table.save(filePath) - saves the table
   Table.deleteRows(index1, index2) - deletes specified rows
   Table.renameColumn(oldName, newName) - renames a column
   Table.deleteColumn(columnName) - deletes specified column
   Table.showRowNumbers(boolean) - enable/disable row numbers

And here are more example macros:

   http://wsr.imagej.net/macros/Sine_Cosine_Table2.txt
   http://wsr.imagej.net/macros/Make_Duplicate_Table.txt
   http://wsr.imagej.net/macros/Access_Plot_Data.txt
   http://wsr.imagej.net/macros/Access_Summary_Table.txt
   http://wsr.imagej.net/macros/Access_Overlay_Elements_Table.txt

-wayne




>

> run("Blobs (25K)");
> run("Set Measurements...", "area mean standard modal min centroid
> center perimeter bounding fit shape feret's stack display
> redirect=None decimal=6"); setAutoThreshold("Default"); run("Analyze
> Particles...", "display clear include in_situ");
> Table.applyMacro("FeretMinimum=MinFeret", "Results");
> Table.applyMacro("FeretMaximum=Feret", "Results");
> Table.applyMacro("FeretAngleCopy=FeretAngle", "Results");
> Table.applyMacro("FeretStartX=FeretX", "Results");
> Table.applyMacro("FeretStartY=FeretY", "Results");
> Table.deleteColumn("MinFeret", "Results"); Table.deleteColumn("Feret",
> "Results"); Table.deleteColumn("FeretAngle", "Results");
> Table.deleteColumn("FeretX", "Results"); Table.deleteColumn("FeretY",
> "Results");
>
> in this context a new Table.renameColumn(oldName, newName, tableName) command could be useful?
> For example, Table.renameColumn ("FeretAngleCopy", "FeretAngle",
> "Results");
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
> Michael Schmid
> Sent: 10. april 2018 15:45
> To: [hidden email]
> Subject: Re: How to create a customised results table and add data to
> it within a macro
>
> Hi Stein,
>
> the standard headings of the ResultsTable are hardcoded. Unfortunately one cannot easily change this since it would break user plugins that access them by their number. This is also the reason for the non-intuitive ordering of the Feret items; "Feret" (min Feret diameter) was in ImageJ since the early days; the others were added later, when a few additional columns were already in between.
>
> (In principle this could be changed, but it would be some effort; it would require a translation table from the old numbers to the corresponding headings).
>
> Scaled Z:
> Yes, you can have a macro for this like, e.g.
>   Table.applyMacro("x=0; y=0; Z=Slice-1; toScaled(x,y,Z);"); (It assumes that the current image window has the same calibration as the Results table; it also accounts for any offset of the origin in z direction).
>
>
> Michael
> ________________________________________________________________
> On 09/04/2018 22:32, Stein Rørvik wrote:
>> Thank you for this clarification; I was not aware of this difference between string-based and numerical tables.
>>
>> Could it still make sense with a Table.setHeader(<tabdelimited string>) command for newly created numerical tables?
>>
>> This would then create an empty table with the desired column headers in the desired order; instead of new columns just appearing in an arbitrary order at first use. One thing that annoys me with the existing Results table is that there is no Z column for calibrated Z positions, and the Feret shape parameters are not placed in any logical order. If one could pre-set the column order, that would fix this easily. For example, MinFeret, Feret, FeretAngle, FeretX, FeretY. Also, Table.applyMacro("Z=Slice*<MicronsPerPixelZ>","Result") would easily add the missing Z coordinate column.
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Michael Schmid
>> Sent: 09. april 2018 19:56
>> To: [hidden email]
>> Subject: Re: How to create a customised results table and add data to
>> it within a macro
>>
>> Hi Stein,
>>
>> a few remarks on tables:
>>
>> Beware that there are two different types of tables in ImageJ:
>>
>> (1) Tables like the ResultsTable, the one you get from Plots with "List", and tables with contents filled in by the new macro Table...
>> commands are essentially numeric (there is a predefined "label" column, which must be the first one, this one is text-only).
>>
>> One can have non-numeric (String) values in other columns, then Table.get(colName, row) will give you NaN (not a number) and you need Table.getString(colName, row). But one would not do the for numbers; and applyMacro will work with the numeric value.
>>
>> For this type of tables, the column headers are fixed. The underlying data structure currently does not support renaming column headers.
>> The column headers are simply created by assigning values to columns (by column name); if a column does not exist, it is created.
>>
>> (2) On the other hand, if you create a table by macro print commands, it is a pure list of Strings, with no numeric values behind it. You can't do any calculations with it, and the Table... commands don't work with it. The purpose of this type of table is only displaying values and saving or copying to the clipboard.
>>
>>
>> This means that all commands using Strings like
>> "Table.addRow(<tabdelimited string>)" for numeric tables would be
>> problematic: It would require conversion of text to numbers; note
>> that
>> number>text>number conversion induces a loss of precision (unless the
>> data are integer or the number of digits is very large).
>>
>> So it would be better to copy numeric values as such, not via String
>> manipulation.
>>
>>
>> Michael
>> ________________________________________________________________
>>
>>
>> On 09/04/2018 17:07, Stein Rørvik wrote:
>>> Thanks, exactly what I need. These functions will be very useful for manipulating an existing results table.
>>> I already tried Table.applyMacro("Results", "DoubleArea=Area*2") with daily build 1.52a39 and it worked as expected.
>>>
>>> Today I use a similar approach as Timothy outlined: I create a new table, read the results from the old one, and use the getResult / setResult functions to create a new table. I also sometimes split lines and use the print(tablename, ... ) syntax to print tab-delimited headers and rows with the new table; this approach is much faster.
>>>
>>> To add to the below list, I think the functions
>>> Table.setHeader(<tabdelimited string>) and
>>> Table.addRow(<tabdelimited
>>> string>), Table.updateRow(<rowindex>, <tabdelimited string>) would be useful for writing contents in batch.
>>>
>>> Also, perhaps Table.headings() could be complemented with
>>> Table.rows() to return all the rows (except the header) as
>>> tab-delimited strings concatenated by \n as well as Table.content()
>>> to return everything as a string (headers plus all the rows)
>>>
>>> Stein
>>>
>>> -----Original Message-----
>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>> Of Michael Schmid
>>> Sent: 09. april 2018 16:33
>>> To: [hidden email]
>>> Subject: Re: How to create a customised results table and add data
>>> to it within a macro
>>>
>>> Hi Stein,
>>>
>>> the Table.* functions are currently under development; they are in the daily build only.
>>>
>>> The list of currently implemented commands is in the Release notes:
>>> https://github.com/imagej/imagej1/blob/master/release-notes.html
>>>
>>>      Table.create() - opens a new table
>>>      Table.size() - number of rows in the table
>>>      Table.title() - title of the current table
>>>      Table.headings() - column headings as a tab-delimited string
>>>      Table.get(columnName, rowIndex) - returns a numeric value
>>>      Table.getString(columnName, rowIndex) - returns a string value
>>>      Table.set(columnName, rowIndex, value) - sets numeric or string value
>>>      Table.update() - updates table window
>>>      Table.reset() - resets (clears) the table
>>>      Table.applyMacro(macro) - applies macro code to table
>>>      Table.rename(title1, title2) - renames a table
>>>      Table.save(filePath) - saves the table
>>>      Table.deleteRows(index1, index2) - deletes specified rows
>>>      Table.deleteColumn(columnName) - deletes specified column
>>>      Table.hideRowNumbers() - disables display of row numbers
>>>
>>>
>>> You can also specify the title of a table, this argument goes last.
>>>
>>> So e.g. the macro I had suggested last week has to be changed to:
>>>     myName = "01.txt";
>>>     Table.applyMacro("_='"+myName+" '+_", "Results");
>>>
>>> If no title is given, the commands refer the main "Results" table or to the current foreground window (if it has a table).
>>> Inside the macro of 'apply macro', if no title is given, the Table commands refer to the table processed by the macro.
>>>
>>> Note that these commands are still experimental. Things may still change, so you may have to adapt your macros in case of changes!
>>>
>>>
>>> Michael
>>> ________________________________________________________________
>>> On 09/04/2018 12:43, Stein Rørvik wrote:
>>>> Table.applyMacro seems very useful, but I cannot see it documented
>>>> in the https://imagej.nih.gov/ij/developer/macro/functions.html webpage?
>>>> Are there any other Table.* functions implemented in ImageJ ?
>>>>
>>>> Stein
>>>>
>>>> -----Original Message-----
>>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>>> Of Michael Schmid
>>>> Sent: 28. mars 2018 18:51
>>>> To: [hidden email]
>>>> Subject: Re: How to create a customised results table and add data
>>>> to it within a macro
>>>>
>>>> Hi Herbie & dschones,
>>>>
>>>> the first column with the 'Y123' etc. is the "row label", not a standard column. In a macro, you can get and set it with
>>>>      getResultLabel(row) and
>>>>      setResult("Label", row, string).
>>>>
>>>> With today's daily build (Help>Update ImageJ), you can also modify it without a loop over all rows:
>>>>
>>>>      myName = "01.txt";
>>>>      Table.applyMacro("Results", "_='"+myName+" '+_");
>>>>
>>>> (Since the "row label" column has an empty name in this case, its
>>>> name is mapped to an underscore as variable name.)
>>>>
>>>> This gives you a space, not a tab between the '01.txt' and the 'Y123'
>>>>
>>>> In principle, one could add a tab, but that would shift all columns to the right. The headers won't get shifted, and I don't think that one could also shift the headers.
>>>>
>>>> By the way, you can have Strings and numbers mixed in one column, but it won't help you here. E.g., if there is a column "X123", this works:
>>>>      setResult("X123", 1, "hello");
>>>>
>>>>
>>>> Michael
>>>> ________________________________________________________________

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Michael Schmid
In reply to this post by Stein Rørvik
On 13/04/2018 09:43, Stein Rørvik wrote:

 > I also wonder, in the code section of the macro, is the row number
accessible as a predefined variable or function so that it can be used
in the Table.applyMacro calculations?
________________________________________________________________

Hi Stein,

the row number is a predefined variable, "row".

If you have a table, right click it or use the Edit menu for the GUI
version of 'apply macro'.
The "Apply Macro" dialog has a "Help" button for more information.
There is also a dropdown menu "Insert..." for variable names, where you
also see how column names that are not valid variable names are mapped
to variable names.

For advanced users of 'aply macro', here is another example macro (for
the 'apply macro' dialog or Table.applyMacrocommand), for smoothing a
column (here "Y") by 3-point averages:

   col = "Y";
   if(row>0 && row<Table.size()-1)
     Smoothed = (Table.get(col, rowIndex-1)+Table.get(col,
row)+Table.get(col, row+1))/3;
   else
     Smoothed=NaN;

[Note that the new column 'Smoothed' is created only if that variable is
assigned when the macro is run for the first line. It would not be
created without the 'else' clause]

Michael
________________________________________________________________
On 13/04/2018 09:43, Stein Rørvik wrote:

> Thank you!
>
> The new Table.applyMacro function makes it a lot easier to reorganize the results column-wise in bulk and create new columns with calculated data. Perhaps the below example macro or something similar could be uploaded to the macro directory of the website?
>
> I also wonder, in the code section of the macro, is the row number accessible as a predefined variable or function so that it can be used in the Table.applyMacro calculations?
>
> Stein
>
> -----Original Message-----
> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Wayne Rasband
> Sent: 13. april 2018 00:26
> To: [hidden email]
> Subject: Re: How to create a customised results table and add data to it within a macro
>
>> On Apr 12, 2018, at 7:31 AM, Stein Rørvik <[hidden email]> wrote:
>>
>> Thanks for this clarification.
>> I already suspected that the results columns order was hard-coded for compatibility.
>>
>> With the new Table.applyMacro function it will be easy to copy columns one by one, so one can append copied columns to the right of the table with new names in the desired order, and thereafter delete the old columns. This way one would get the desired layout without looping through all values.
>>
>> This example macro seems to work as intended:
>
> The latest daily build (1.52a47) adds a Table.renameColumn(oldName, newName) function. Here is an updated version of the example macro that uses it:
>
>    run("Blobs (25K)");
>    run("Set Measurements...", "area mean centroid feret's");
>    setAutoThreshold("Default");
>    Table.reset("Results");
>    run("Analyze Particles...", "display include in_situ");
>    code = "FeretMinimum=MinFeret; FeretMaximum=Feret;"
>      +"FeretAngleCopy=FeretAngle; FeretStartX=FeretX;"
>      +"FeretStartY=FeretY";
>    Table.applyMacro(code);
>    Table.deleteColumn("MinFeret");
>    Table.deleteColumn("Feret");
>    Table.deleteColumn("FeretAngle");
>    Table.deleteColumn("FeretX");
>    Table.deleteColumn("FeretY");
>    Table.renameColumn("FeretAngleCopy", "FeretAngle");
>    Table.update;
>
> The “Results” arguments in the original version are not needed since Table.reset("Results”) makes “Results” the current (active) table. All five columns are copied in one call to Table.applyMacro() since this is more efficient. The Table.update call is needed since Table.deleteColumn() and Table.renameColumn() do not update the display.
>
> Here is a list of the currently available Table.* functions:
>
>     Table.create(table) - opens a new table
>     Table.reset(table) - resets (clears) the table
>     Table.size() - number of rows in the table
>     Table.title() - title of the current table
>     Table.headings() - column headings as a tab-delimited string
>     Table.get(columnName, rowIndex) - returns a numeric value
>     Table.getString(columnName, rowIndex) - returns a string value
>     Table.set(columnName, rowIndex, value) - sets numeric or string value
>     Table.update() - updates table window
>     Table.applyMacro(macro) - applies macro code to table
>     Table.rename(title1, title2) - renames a table
>     Table.save(filePath) - saves the table
>     Table.deleteRows(index1, index2) - deletes specified rows
>     Table.renameColumn(oldName, newName) - renames a column
>     Table.deleteColumn(columnName) - deletes specified column
>     Table.showRowNumbers(boolean) - enable/disable row numbers
>
> And here are more example macros:
>
>     http://wsr.imagej.net/macros/Sine_Cosine_Table2.txt
>     http://wsr.imagej.net/macros/Make_Duplicate_Table.txt
>     http://wsr.imagej.net/macros/Access_Plot_Data.txt
>     http://wsr.imagej.net/macros/Access_Summary_Table.txt
>     http://wsr.imagej.net/macros/Access_Overlay_Elements_Table.txt
>
> -wayne
>
>
>
>
>>
>
>> run("Blobs (25K)");
>> run("Set Measurements...", "area mean standard modal min centroid
>> center perimeter bounding fit shape feret's stack display
>> redirect=None decimal=6"); setAutoThreshold("Default"); run("Analyze
>> Particles...", "display clear include in_situ");
>> Table.applyMacro("FeretMinimum=MinFeret", "Results");
>> Table.applyMacro("FeretMaximum=Feret", "Results");
>> Table.applyMacro("FeretAngleCopy=FeretAngle", "Results");
>> Table.applyMacro("FeretStartX=FeretX", "Results");
>> Table.applyMacro("FeretStartY=FeretY", "Results");
>> Table.deleteColumn("MinFeret", "Results"); Table.deleteColumn("Feret",
>> "Results"); Table.deleteColumn("FeretAngle", "Results");
>> Table.deleteColumn("FeretX", "Results"); Table.deleteColumn("FeretY",
>> "Results");
>>
>> in this context a new Table.renameColumn(oldName, newName, tableName) command could be useful?
>> For example, Table.renameColumn ("FeretAngleCopy", "FeretAngle",
>> "Results");
>>
>> Stein
>>
>> -----Original Message-----
>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>> Michael Schmid
>> Sent: 10. april 2018 15:45
>> To: [hidden email]
>> Subject: Re: How to create a customised results table and add data to
>> it within a macro
>>
>> Hi Stein,
>>
>> the standard headings of the ResultsTable are hardcoded. Unfortunately one cannot easily change this since it would break user plugins that access them by their number. This is also the reason for the non-intuitive ordering of the Feret items; "Feret" (min Feret diameter) was in ImageJ since the early days; the others were added later, when a few additional columns were already in between.
>>
>> (In principle this could be changed, but it would be some effort; it would require a translation table from the old numbers to the corresponding headings).
>>
>> Scaled Z:
>> Yes, you can have a macro for this like, e.g.
>>    Table.applyMacro("x=0; y=0; Z=Slice-1; toScaled(x,y,Z);"); (It assumes that the current image window has the same calibration as the Results table; it also accounts for any offset of the origin in z direction).
>>
>>
>> Michael
>> ________________________________________________________________
>> On 09/04/2018 22:32, Stein Rørvik wrote:
>>> Thank you for this clarification; I was not aware of this difference between string-based and numerical tables.
>>>
>>> Could it still make sense with a Table.setHeader(<tabdelimited string>) command for newly created numerical tables?
>>>
>>> This would then create an empty table with the desired column headers in the desired order; instead of new columns just appearing in an arbitrary order at first use. One thing that annoys me with the existing Results table is that there is no Z column for calibrated Z positions, and the Feret shape parameters are not placed in any logical order. If one could pre-set the column order, that would fix this easily. For example, MinFeret, Feret, FeretAngle, FeretX, FeretY. Also, Table.applyMacro("Z=Slice*<MicronsPerPixelZ>","Result") would easily add the missing Z coordinate column.
>>>
>>> Stein
>>>
>>> -----Original Message-----
>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of
>>> Michael Schmid
>>> Sent: 09. april 2018 19:56
>>> To: [hidden email]
>>> Subject: Re: How to create a customised results table and add data to
>>> it within a macro
>>>
>>> Hi Stein,
>>>
>>> a few remarks on tables:
>>>
>>> Beware that there are two different types of tables in ImageJ:
>>>
>>> (1) Tables like the ResultsTable, the one you get from Plots with "List", and tables with contents filled in by the new macro Table...
>>> commands are essentially numeric (there is a predefined "label" column, which must be the first one, this one is text-only).
>>>
>>> One can have non-numeric (String) values in other columns, then Table.get(colName, row) will give you NaN (not a number) and you need Table.getString(colName, row). But one would not do the for numbers; and applyMacro will work with the numeric value.
>>>
>>> For this type of tables, the column headers are fixed. The underlying data structure currently does not support renaming column headers.
>>> The column headers are simply created by assigning values to columns (by column name); if a column does not exist, it is created.
>>>
>>> (2) On the other hand, if you create a table by macro print commands, it is a pure list of Strings, with no numeric values behind it. You can't do any calculations with it, and the Table... commands don't work with it. The purpose of this type of table is only displaying values and saving or copying to the clipboard.
>>>
>>>
>>> This means that all commands using Strings like
>>> "Table.addRow(<tabdelimited string>)" for numeric tables would be
>>> problematic: It would require conversion of text to numbers; note
>>> that
>>> number>text>number conversion induces a loss of precision (unless the
>>> data are integer or the number of digits is very large).
>>>
>>> So it would be better to copy numeric values as such, not via String
>>> manipulation.
>>>
>>>
>>> Michael
>>> ________________________________________________________________
>>>
>>>
>>> On 09/04/2018 17:07, Stein Rørvik wrote:
>>>> Thanks, exactly what I need. These functions will be very useful for manipulating an existing results table.
>>>> I already tried Table.applyMacro("Results", "DoubleArea=Area*2") with daily build 1.52a39 and it worked as expected.
>>>>
>>>> Today I use a similar approach as Timothy outlined: I create a new table, read the results from the old one, and use the getResult / setResult functions to create a new table. I also sometimes split lines and use the print(tablename, ... ) syntax to print tab-delimited headers and rows with the new table; this approach is much faster.
>>>>
>>>> To add to the below list, I think the functions
>>>> Table.setHeader(<tabdelimited string>) and
>>>> Table.addRow(<tabdelimited
>>>> string>), Table.updateRow(<rowindex>, <tabdelimited string>) would be useful for writing contents in batch.
>>>>
>>>> Also, perhaps Table.headings() could be complemented with
>>>> Table.rows() to return all the rows (except the header) as
>>>> tab-delimited strings concatenated by \n as well as Table.content()
>>>> to return everything as a string (headers plus all the rows)
>>>>
>>>> Stein
>>>>
>>>> -----Original Message-----
>>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>>> Of Michael Schmid
>>>> Sent: 09. april 2018 16:33
>>>> To: [hidden email]
>>>> Subject: Re: How to create a customised results table and add data
>>>> to it within a macro
>>>>
>>>> Hi Stein,
>>>>
>>>> the Table.* functions are currently under development; they are in the daily build only.
>>>>
>>>> The list of currently implemented commands is in the Release notes:
>>>> https://github.com/imagej/imagej1/blob/master/release-notes.html
>>>>
>>>>       Table.create() - opens a new table
>>>>       Table.size() - number of rows in the table
>>>>       Table.title() - title of the current table
>>>>       Table.headings() - column headings as a tab-delimited string
>>>>       Table.get(columnName, rowIndex) - returns a numeric value
>>>>       Table.getString(columnName, rowIndex) - returns a string value
>>>>       Table.set(columnName, rowIndex, value) - sets numeric or string value
>>>>       Table.update() - updates table window
>>>>       Table.reset() - resets (clears) the table
>>>>       Table.applyMacro(macro) - applies macro code to table
>>>>       Table.rename(title1, title2) - renames a table
>>>>       Table.save(filePath) - saves the table
>>>>       Table.deleteRows(index1, index2) - deletes specified rows
>>>>       Table.deleteColumn(columnName) - deletes specified column
>>>>       Table.hideRowNumbers() - disables display of row numbers
>>>>
>>>>
>>>> You can also specify the title of a table, this argument goes last.
>>>>
>>>> So e.g. the macro I had suggested last week has to be changed to:
>>>>      myName = "01.txt";
>>>>      Table.applyMacro("_='"+myName+" '+_", "Results");
>>>>
>>>> If no title is given, the commands refer the main "Results" table or to the current foreground window (if it has a table).
>>>> Inside the macro of 'apply macro', if no title is given, the Table commands refer to the table processed by the macro.
>>>>
>>>> Note that these commands are still experimental. Things may still change, so you may have to adapt your macros in case of changes!
>>>>
>>>>
>>>> Michael
>>>> ________________________________________________________________
>>>> On 09/04/2018 12:43, Stein Rørvik wrote:
>>>>> Table.applyMacro seems very useful, but I cannot see it documented
>>>>> in the https://imagej.nih.gov/ij/developer/macro/functions.html webpage?
>>>>> Are there any other Table.* functions implemented in ImageJ ?
>>>>>
>>>>> Stein
>>>>>
>>>>> -----Original Message-----
>>>>> From: ImageJ Interest Group [mailto:[hidden email]] On Behalf
>>>>> Of Michael Schmid
>>>>> Sent: 28. mars 2018 18:51
>>>>> To: [hidden email]
>>>>> Subject: Re: How to create a customised results table and add data
>>>>> to it within a macro
>>>>>
>>>>> Hi Herbie & dschones,
>>>>>
>>>>> the first column with the 'Y123' etc. is the "row label", not a standard column. In a macro, you can get and set it with
>>>>>       getResultLabel(row) and
>>>>>       setResult("Label", row, string).
>>>>>
>>>>> With today's daily build (Help>Update ImageJ), you can also modify it without a loop over all rows:
>>>>>
>>>>>       myName = "01.txt";
>>>>>       Table.applyMacro("Results", "_='"+myName+" '+_");
>>>>>
>>>>> (Since the "row label" column has an empty name in this case, its
>>>>> name is mapped to an underscore as variable name.)
>>>>>
>>>>> This gives you a space, not a tab between the '01.txt' and the 'Y123'
>>>>>
>>>>> In principle, one could add a tab, but that would shift all columns to the right. The headers won't get shifted, and I don't think that one could also shift the headers.
>>>>>
>>>>> By the way, you can have Strings and numbers mixed in one column, but it won't help you here. E.g., if there is a column "X123", this works:
>>>>>       setResult("X123", 1, "hello");
>>>>>
>>>>>
>>>>> Michael
>>>>> ________________________________________________________________
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Michael Schmid
In reply to this post by Stein Rørvik
On 13/04/2018 10:11, Stein Rørvik wrote:

> it would be useful to select an existing table without clearing it.
> Could a Table.select(table) function for doing this be added as well?

Hi Stein,

I guess that selectWindow("name") would do the job.

> We have a Table.save(filePath) command;
> Table.load(filePath) could also be useful.
> This would then create a new table based on the content of a file.

Yes, I agree!
It would be nice to have something like File>Import>Results, but without
overwriting the Results table (maybe taking the file name as title)

> I also wonder how to access tables that are not shown.
> The example macros you link to all uses commands that generate tables, e.g. run("List Elements");
> How can I access tables that are not shown by default, e.g. the Histogram or LUT tables?

Well, you can get the values as arrays via various macro functions:

   getLut(reds, greens, blues) returns 3 arrays
   getRawStatistics(nPixels, mean, min, max, std, histogram)
   getStatistics(area, mean, min, max, std, histogram)
   getHistogram(values, counts, nBins[, histMin, histMax])
   Roi.getCoordinates(xpoints, ypoints)

For plots, it is somewhat limited, however:
   Plot.getValues(xpoints, ypoints)
does not give the full table if there are several curves or data sets
(in contrast to the 'List' function).


Michael

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Stein Rørvik
Retrieving the values as arrays and populating the table from them would work, but it still requires that you make a loop and populate the cells one by one.

Perhaps we could have a
Table.setArray(columnName, arrayName) function
that would simply fill a column with the array values.

The code for creating the histogram table would then be
getHistogram(values, counts, nBins)
Table.setArray("values", values)
Table.setArray("counts", counts)

Stein

-----Original Message-----
From: ImageJ Interest Group [mailto:[hidden email]] On Behalf Of Michael Schmid
Sent: 13. april 2018 14:50
To: [hidden email]
Subject: Re: How to create a customised results table and add data to it within a macro

...

> The example macros you link to all uses commands that generate tables,
> e.g. run("List Elements"); How can I access tables that are not shown by default, e.g. the Histogram or LUT tables?

Well, you can get the values as arrays via various macro functions:

   getLut(reds, greens, blues) returns 3 arrays
   getRawStatistics(nPixels, mean, min, max, std, histogram)
   getStatistics(area, mean, min, max, std, histogram)
   getHistogram(values, counts, nBins[, histMin, histMax])
   Roi.getCoordinates(xpoints, ypoints)

For plots, it is somewhat limited, however:
   Plot.getValues(xpoints, ypoints)
does not give the full table if there are several curves or data sets (in contrast to the 'List' function).


Michael

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Aimee2158
In reply to this post by PEARSON Matthew

Covid; 2017 - 2030 Girls and Boys - Russian Family Incest -- Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls; ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens.
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Log In or Sign Up; Link: https://xubster.com/free546.html

Amateur Young Girls
Link; 1: https://xubster.com/users/546/12421/0001
Link; 2: https://xubster.com/users/546/12462/0002
Link; 3: https://xubster.com/users/546/12463/0003
Link; 4: https://xubster.com/users/546/12464/0004
Link; 5: https://xubster.com/users/546/12465/0005
Link; 6: https://xubster.com/users/546/12466/0006
Link; 7: https://xubster.com/users/546/12467/0007
Link; 8: https://xubster.com/users/546/12468/0008
Link; 9: https://xubster.com/users/546/12469/0009
Link; 10: https://xubster.com/users/546/12470/0010
Link; 11: https://xubster.com/users/546/12471/0011
Link; 12: https://xubster.com/users/546/12472/0012

Covid: 2017 - 2030 - Girls and Boys
Link; 13: https://xubster.com/users/546/12422/0013
Link; 14: https://xubster.com/users/546/12473/0014

18 yo Teens Only
Innocent sweethearts star in 18 year old sex scenes
with their tight cunts filled by big cocks
Sexy coeds give hot blowjobs and swallow cum
Teens, Hardcore, Large Shlong, Amateur eighteen Years Old
18 year old masturbates on cam
Horny Teen 19 Years Old Masturbating On Web Cam
Only fingers filling my pussy to orgasm
Link; 15: https://xubster.com/users/546/12423/0015
Link; 16: https://xubster.com/users/546/12474/0016
Link; 17: https://xubster.com/users/546/12475/0017
Link; 18: https://xubster.com/users/546/12476/0018
Link; 19: https://xubster.com/users/546/12477/0019

Asian Tiktok Teens
Link; 20: https://xubster.com/users/546/12424/0020
Link; 21: https://xubster.com/users/546/12479/0021
Link; 22: https://xubster.com/users/546/12480/0022
Link; 23: https://xubster.com/users/546/12481/0023
Link; 24: https://xubster.com/users/546/12482/0024
Link; 25: https://xubster.com/users/546/12483/0025
Link; 26: https://xubster.com/users/546/12484/0026
Link; 27: https://xubster.com/users/546/12485/0027
Link; 28: https://xubster.com/users/546/12486/0028
Link; 29: https://xubster.com/users/546/12487/0029
Link; 30: https://xubster.com/users/546/12488/0030
Link; 31: https://xubster.com/users/546/12489/0031

Real Life Cam
Teen and Young Girls and Couples
Voyeur Villa Nelly Doggystyle HD Sex
Real Private Life on WebCam
Categories: Voyeur Sex, WebCam Porn, SpyCam Fetish
Teen Cam, Young Couples, Exhibitionism Video, Young Public Sex
WebCam Public Sex, Masturbation Teens, TeenSex
Link; 32: https://xubster.com/users/546/12418/0032
Link; 33: https://xubster.com/users/546/12490/0033
Link; 34: https://xubster.com/users/546/12491/0034
Link; 35: https://xubster.com/users/546/12492/0035
Link; 36: https://xubster.com/users/546/12493/0036
Link; 37: https://xubster.com/users/546/12494/0037

Porn Tiktok 18+ Banned on TikTok
Link; 38: https://xubster.com/users/546/12592/0038
Link; 39: https://xubster.com/users/546/12593/0039
Link; 40: https://xubster.com/users/546/12594/0040
Link; 41: https://xubster.com/users/546/12595/0041
Link; 42: https://xubster.com/users/546/12596/0042
Link; 43: https://xubster.com/users/546/12597/0043
Link; 44: https://xubster.com/users/546/12598/0044
Link; 45: https://xubster.com/users/546/12599/0045
Link; 46: https://xubster.com/users/546/12600/0046
Link; 47: https://xubster.com/users/546/12601/0047
Link; 48: https://xubster.com/users/546/12602/0048
Link; 49: https://xubster.com/users/546/12603/0049
Link; 50: https://xubster.com/users/546/12604/0050

Teen Models
Japanese Teen Girl in WebCam Show After School
MISS VIKKI - TEEN RUSSIAN MODEL
Little Miss Vikki From Russia -- My Private Collection
Mattie Doll -- Horny Teen With a Talent for Sharing Sensational Orgasmes
Kyutty Kitty -- Asian Sweety PussyCat
REAL VIDEOS OF SEXY TEEN MODEL Hentai-Cat
Effy Loweell -- Sexy Young Models With Small Tits

Alice MFC
Link; 51: https://xubster.com/users/546/12427

Alison Lil Baby
Link; 52: https://xubster.com/users/546/12428

Cute Mary
Link; 53: https://xubster.com/users/546/12429

Effy Loweell
Link; 54: https://xubster.com/users/546/12430

Hana Lily
Link; 55: https://xubster.com/users/546/12431

Hentai-Cat
Link; 56: https://xubster.com/users/546/12432

Hot Nesquik
Link; 57: https://xubster.com/users/546/12433

Katya Letova
Link; 58: https://xubster.com/users/546/12434

Koska Leska
Link; 59: https://xubster.com/users/546/12435

Kyutty
Link; 60: https://xubster.com/users/546/12436

Mattie Doll
Link; 61: https://xubster.com/users/546/12437

Miss Vikki
Link; 62: https://xubster.com/users/546/12438

Venus Kitty
Link; 63: https://xubster.com/users/546/12439

Your Wet Schoolgirl
Link; 64: https://xubster.com/users/546/12440

Non Nude Tiktok Teens
Teen Cute Girls talk, sexy dance and play on cam
Link; 65: https://xubster.com/users/546/12452/0065
Link; 66: https://xubster.com/users/546/12507/0066
Link; 67: https://xubster.com/users/546/12508/0067
Link; 68: https://xubster.com/users/546/12509/0068
Link; 69: https://xubster.com/users/546/12510/0069
Link; 70: https://xubster.com/users/546/12511/0070
Link; 71: https://xubster.com/users/546/12512/0071
Link; 72: https://xubster.com/users/546/12513/0072
Link; 73: https://xubster.com/users/546/12514/0073
Link; 74: https://xubster.com/users/546/12515/0074
Link; 75: https://xubster.com/users/546/12516/0075
Link; 76: https://xubster.com/users/546/12517/0076

Nudism Young Girls
Link; 77: https://xubster.com/users/546/12453/0077
Link; 78: https://xubster.com/users/546/12518/0078
Link; 79: https://xubster.com/users/546/12519/0079
Link; 80: https://xubster.com/users/546/12520/0080
Link; 81: https://xubster.com/users/546/12521/0081
Link; 82: https://xubster.com/users/546/12522/0082
Link; 83: https://xubster.com/users/546/12523/0083

Russian Family Incest
Incest family teens
Link; 84: https://xubster.com/users/546/12454/0084
Link; 85: https://xubster.com/users/546/12524/0085
Link; 86: https://xubster.com/users/546/12525/0086
Link; 87: https://xubster.com/users/546/12526/0087
Link; 88: https://xubster.com/users/546/12527/0088
Link; 89: https://xubster.com/users/546/12528/0089
Link; 90: https://xubster.com/users/546/12529/0090
Link; 91: https://xubster.com/users/546/12530/0091

Real Spycam - Hiddencam
Link; 92: https://xubster.com/users/546/12455/0092
Link; 93: https://xubster.com/users/546/12531/0093
Link; 94: https://xubster.com/users/546/12532/0094
Link; 95: https://xubster.com/users/546/12533/0095
Link; 96: https://xubster.com/users/546/12534/0096
Link; 97: https://xubster.com/users/546/12535/0097
Link; 98: https://xubster.com/users/546/12536/0098
Link; 99: https://xubster.com/users/546/12537/0099
Link; 100: https://xubster.com/users/546/12538/0100
Link; 101: https://xubster.com/users/546/12539/0101
Link; 102: https://xubster.com/users/546/12540/0102
Link; 103: https://xubster.com/users/546/12541/0103

Tight Teen Pussy
FUCK TIGHT TEEN PUSSY - Real Fuck Extreme Small Teen Pussy - 18+
FULL HD 83 Hot Home Made Videos of Real Extreme Fuck Small Teen Pussy
Link; 104: https://xubster.com/users/546/12456/0104

Random Tiktok Girls
Link; 105: https://xubster.com/users/546/12457/0105
Link; 106: https://xubster.com/users/546/12542/0106
Link; 107: https://xubster.com/users/546/12543/0107
Link; 108: https://xubster.com/users/546/12544/0108
Link; 109: https://xubster.com/users/546/12545/0109
Link; 110: https://xubster.com/users/546/12546/0110
Link; 111: https://xubster.com/users/546/12547/0111
Link; 112: https://xubster.com/users/546/12548/0112
Link; 113: https://xubster.com/users/546/12549/0113
Link; 114: https://xubster.com/users/546/12550/0114
Link; 115: https://xubster.com/users/546/12551/0115
Link; 116: https://xubster.com/users/546/12552/0116
Link; 117: https://xubster.com/users/546/12553/0117
Link; 118: https://xubster.com/users/546/12554/0118

Skype and Omegle Girls
Link; 119: https://xubster.com/users/546/12459/0119
Link; 120: https://xubster.com/users/546/12555/0120
Link; 121: https://xubster.com/users/546/12556/0121
Link; 122: https://xubster.com/users/546/12557/0122
Link; 123: https://xubster.com/users/546/12558/0123
Link; 124: https://xubster.com/users/546/12559/0124
Link; 125: https://xubster.com/users/546/12560/0125
Link; 126: https://xubster.com/users/546/12561/0126
Link; 127: https://xubster.com/users/546/12562/0127
Link; 128: https://xubster.com/users/546/12563/0128
Link; 129: https://xubster.com/users/546/12564/0129
Link; 130: https://xubster.com/users/546/12565/0130

Tiktok Nude Girls
Link; 131: https://xubster.com/users/546/12460/0131
Link; 132: https://xubster.com/users/546/12566/0132
Link; 133: https://xubster.com/users/546/12567/0133
Link; 134: https://xubster.com/users/546/12568/0134
Link; 135: https://xubster.com/users/546/12569/0135
Link; 136: https://xubster.com/users/546/12570/0136
Link; 137: https://xubster.com/users/546/12571/0137
Link; 138: https://xubster.com/users/546/12572/0138
Link; 139: https://xubster.com/users/546/12573/0139
Link; 140: https://xubster.com/users/546/12574/0140
Link; 141: https://xubster.com/users/546/12575/0141
Link; 142: https://xubster.com/users/546/12576/0142
Link; 143: https://xubster.com/users/546/12577/0143
Link; 144: https://xubster.com/users/546/12578/0144
Link; 145: https://xubster.com/users/546/12579/0145

Webcam Teens and Couples
Link; 146: https://xubster.com/users/546/12461/0146
Link; 147: https://xubster.com/users/546/12580/0147
Link; 148: https://xubster.com/users/546/12581/0148
Link; 149: https://xubster.com/users/546/12582/0149
Link; 150: https://xubster.com/users/546/12583/0150
Link; 151: https://xubster.com/users/546/12584/0151
Link; 152: https://xubster.com/users/546/12585/0152
Link; 153: https://xubster.com/users/546/12586/0153
Link; 154: https://xubster.com/users/546/12587/0154
Link; 155: https://xubster.com/users/546/12588/0155
Link; 156: https://xubster.com/users/546/12589/0156
Link; 157: https://xubster.com/users/546/12590/0157

Rape Porn; Free Porn Videos; HD - VR Sex Videos
Link; 158: https://xubster.com/users/546/6261/001

Snuff Porn Videos; Fake murders and decapitation
Link; 159: https://xubster.com/users/546/6265/002

Forced Porn; Forced Sex - Forced To Fuck Videos
Link; 160: https://xubster.com/users/546/6266/003

Hot Asian Teen Sex Videos; Japanese and Korean Porn Movies
Link; 161: https://xubster.com/users/546/6262/004

Sleeping Girl Gets An Unexpected Visit Late At Night
Sex Sleeping Girl Porn Videos
Link; 162: https://xubster.com/users/546/6296/005

Lesbian Necrophilia Porn Videos
Link; 163: https://xubster.com/users/546/6290/006

Horror Porn Videos - Sex Movies
Link; 164: https://xubster.com/users/546/6295/007

Sex Gay Porn Videos
Link; 165: https://xubster.com/users/546/6281/008

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

3D, Hentai, Free Games

Download from Daofile.com:
Link: https://daofile.com/go/p47ssveuv75c

Sex Cartoons; Free Games; Hentai; Manga; 3D

Download: MegaPack; 367249 Files:
Link: https://file.al/public/56284/38916

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://xubster.com/users/546/12061

HD Young Nudists PN Videos

Download from Xubster.com:
Link: https://xubster.com/users/546/12062
Link: https://xubster.com/users/546/12067

PN Teen Girls; Young Adult Nudism; Teen Nudist Sex:

Download: MegaPack; 83150 Files:
Link: https://file.al/public/56284/38915

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Private Collection; Real Teen Sexy Selfies and Videos

Download: MegaPack; 192851 Files:
Link: https://file.al/public/56284/38917

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://daofile.com/go/efb4i0wyu73a

TukTuk Patrol - Thai Teen Video:

Download from Daofile.com:
Link: https://daofile.com/go/0ackk6rwv5gq

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Girls and Boys PT - Photo and Video

Download: MegaPack; 531498 Files:
Link: https://file.al/public/56284/39650

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

VIP: - Young Nude Vagina
Link; 1: https://daofile.com/go/58017o3w2wa1

VIP: - Taboo Teen Archive
Link; 2: https://daofile.com/go/at6nq7tzdrwq
Link; 3: https://daofile.com/go/uqvdfvlt1b7j

VIP: - Private Sex Orgy; - Self Teen Girls
Link; 4: https://daofile.com/go/rwmcfthjrcew
Link; 5: https://daofile.com/go/7x4q0mtks6bo

Young Teen Bathing Suit Videos and HD Footage
Asian Woman In Bathroom Videos and HD Footage
Japanese Bath Culture, Public Bath
Link; 6: https://daofile.com/go/zvcjqfm0s50w
Link; 7: https://daofile.com/go/62mt4oaxq78n
Link; 8: https://daofile.com/go/x1q0iheql2ym
Link; 9: https://daofile.com/go/c9d7xs7fsme6
Link; 10: https://daofile.com/go/0pza6o1prc3r
Link; 11: https://daofile.com/go/s6qkgi10c7tf
Link; 12: https://daofile.com/go/1mg548npuj9p
Link; 13: https://daofile.com/go/piif3sxzu7y4

Japanese Teen HD Sex Porn Videos
Japanese School Girl Full Movie Porn videos
Japanese teen jav xxx sex school asian big tits milf mom sister porn HD
Link; 14: https://daofile.com/go/ws3qwum15koi
Link; 15: https://daofile.com/go/z9k8qssuw74c
Link; 16: https://daofile.com/go/r2pmntlq6vkp
Link; 17: https://daofile.com/go/r9khigu0c0xe
Link; 18: https://daofile.com/go/5qfkaafzvk0k
Link; 19: https://daofile.com/go/st4jcfg1g9bz
Link; 20: https://daofile.com/go/4hvigt8dchbc

Selfie teens
Real teens sexy selfies, show teen tits
Link; 21: https://daofile.com/go/dlfstx2s3mv3
Link; 22: https://daofile.com/go/3i181cjpm77j
Link; 23: https://daofile.com/go/ccyhj01bdnmg
Link; 24: https://daofile.com/go/gh7snep8cn54

Collection of Teen Sex and Erotic Videos
Link; 25: https://daofile.com/go/kun7aw1l0sxy
Link; 26: https://daofile.com/go/u9jikdewbmen
Link; 27: https://daofile.com/go/sxflclskqlde
Link; 28: https://daofile.com/go/htsmkg04kkop
Link; 29: https://daofile.com/go/daq9svwypcpg
Link; 30: https://daofile.com/go/d26g52rcnyql
Link; 31: https://daofile.com/go/4msqlcw96jyf
Link; 32: https://daofile.com/go/a6vapjguf0x7
Link; 33: https://daofile.com/go/937pupbznnt1

Webcam Teen
Teen Erotic Videos From Real Life Cams - Omegle teen, Skype teen
Link; 34: https://daofile.com/go/e2nnzbuhjt5z
Link; 35: https://daofile.com/go/nz1tewuygcr1
Link; 36: https://daofile.com/go/23sfxojnkhlc
Link; 37: https://daofile.com/go/31lpybl6312o
Link; 38: https://daofile.com/go/ahtftflfq6gl
Link; 39: https://daofile.com/go/5xcpj94xj6tw
Link; 40: https://daofile.com/go/gyshuzhg00l8
Link; 41: https://daofile.com/go/kr3zaonpkf4p
Link; 42: https://daofile.com/go/cl923bdxvs9k
Link; 43: https://daofile.com/go/3burlwssg7py
Link; 44: https://daofile.com/go/e12thco5doao

Young Girls and Boys Make Real Hot Sex on Cam
Link; 45: https://daofile.com/go/k0ws7lypjw5c
Link; 46: https://daofile.com/go/w96f0hj7ym8t

Sex Machine Porn Videos
Link; 47: https://daofile.com/go/psc0hbsfch2w
Link; 48: https://daofile.com/go/xet9s4b8l1n0

Candy-Dolls; Teen Crazy Girls Gallery
Link; 49: https://daofile.com/go/ka68my4wdqca
Link; 50: https://daofile.com/go/wwiaf2oaavgp

Toilet HD Videos - Hidden cams in toilets film every amateur comer
Watch Public toilet spy cam of girls pissing of Best Collection Voyeur Porn videos
Medical And Gyno Voyeur Videos
Watch Medical voyeur cam shooting
Asian explored in the gyno office of Best Collection Voyeur Porn videos
Link; 51: https://daofile.com/go/71feh10vjrfe
Link; 52: https://daofile.com/go/osxvp1epjyam
Link; 53: https://daofile.com/go/ylhuc48hu73l
Link; 54: https://daofile.com/go/5lx4gmnok82y
Link; 55: https://daofile.com/go/u13oih6vbrjc
Link; 56: https://daofile.com/go/s3a5qk1p5cyw

Tokyo-Dolls - Sexy Teen Girls - Full Collection
Link; 57: https://daofile.com/go/y9w47mnulyw1

Galitsin Teen - TP Sex Videos i7149
Link; 58: https://daofile.com/go/6uttrr3le10n
Link; 59: https://daofile.com/go/sjatsg7tjroi
Link; 60: https://daofile.com/go/1gx4d40cf40w
Link; 61: https://daofile.com/go/mu8hlmao4fge
Link; 62: https://daofile.com/go/phu0sv1tgx9c
Link; 63: https://daofile.com/go/z6oa86xp644b

Candid HD
Link; 64: https://daofile.com/go/1piz0c48n4p3

Femdom BDSM;
Link; 65: https://daofile.com/go/u6w29zcyys0c

Nonude Models
Link; 66: https://daofile.com/go/nnxix879th8k

Nudi-Pageant
Link; 67: https://daofile.com/go/nxnme8zrveru

TTL and YFM Teen Latinas Models
Link; 68: http://daofile.com/go/wlpk7947rax3

*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls - Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls, ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

___________________
___________________

Young Girls and Boys Make Real Hot Sex on Cam gj_29
Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Aimee2158
In reply to this post by Stein Rørvik

Covid; 2017 - 2030 Girls and Boys - Russian Family Incest -- Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls; ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens.
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Log In or Sign Up; Link: https://xubster.com/free546.html

Amateur Young Girls
Link; 1: https://xubster.com/users/546/12421/0001
Link; 2: https://xubster.com/users/546/12462/0002
Link; 3: https://xubster.com/users/546/12463/0003
Link; 4: https://xubster.com/users/546/12464/0004
Link; 5: https://xubster.com/users/546/12465/0005
Link; 6: https://xubster.com/users/546/12466/0006
Link; 7: https://xubster.com/users/546/12467/0007
Link; 8: https://xubster.com/users/546/12468/0008
Link; 9: https://xubster.com/users/546/12469/0009
Link; 10: https://xubster.com/users/546/12470/0010
Link; 11: https://xubster.com/users/546/12471/0011
Link; 12: https://xubster.com/users/546/12472/0012

Covid: 2017 - 2030 - Girls and Boys
Link; 13: https://xubster.com/users/546/12422/0013
Link; 14: https://xubster.com/users/546/12473/0014

18 yo Teens Only
Innocent sweethearts star in 18 year old sex scenes
with their tight cunts filled by big cocks
Sexy coeds give hot blowjobs and swallow cum
Teens, Hardcore, Large Shlong, Amateur eighteen Years Old
18 year old masturbates on cam
Horny Teen 19 Years Old Masturbating On Web Cam
Only fingers filling my pussy to orgasm
Link; 15: https://xubster.com/users/546/12423/0015
Link; 16: https://xubster.com/users/546/12474/0016
Link; 17: https://xubster.com/users/546/12475/0017
Link; 18: https://xubster.com/users/546/12476/0018
Link; 19: https://xubster.com/users/546/12477/0019

Asian Tiktok Teens
Link; 20: https://xubster.com/users/546/12424/0020
Link; 21: https://xubster.com/users/546/12479/0021
Link; 22: https://xubster.com/users/546/12480/0022
Link; 23: https://xubster.com/users/546/12481/0023
Link; 24: https://xubster.com/users/546/12482/0024
Link; 25: https://xubster.com/users/546/12483/0025
Link; 26: https://xubster.com/users/546/12484/0026
Link; 27: https://xubster.com/users/546/12485/0027
Link; 28: https://xubster.com/users/546/12486/0028
Link; 29: https://xubster.com/users/546/12487/0029
Link; 30: https://xubster.com/users/546/12488/0030
Link; 31: https://xubster.com/users/546/12489/0031

Real Life Cam
Teen and Young Girls and Couples
Voyeur Villa Nelly Doggystyle HD Sex
Real Private Life on WebCam
Categories: Voyeur Sex, WebCam Porn, SpyCam Fetish
Teen Cam, Young Couples, Exhibitionism Video, Young Public Sex
WebCam Public Sex, Masturbation Teens, TeenSex
Link; 32: https://xubster.com/users/546/12418/0032
Link; 33: https://xubster.com/users/546/12490/0033
Link; 34: https://xubster.com/users/546/12491/0034
Link; 35: https://xubster.com/users/546/12492/0035
Link; 36: https://xubster.com/users/546/12493/0036
Link; 37: https://xubster.com/users/546/12494/0037

Porn Tiktok 18+ Banned on TikTok
Link; 38: https://xubster.com/users/546/12592/0038
Link; 39: https://xubster.com/users/546/12593/0039
Link; 40: https://xubster.com/users/546/12594/0040
Link; 41: https://xubster.com/users/546/12595/0041
Link; 42: https://xubster.com/users/546/12596/0042
Link; 43: https://xubster.com/users/546/12597/0043
Link; 44: https://xubster.com/users/546/12598/0044
Link; 45: https://xubster.com/users/546/12599/0045
Link; 46: https://xubster.com/users/546/12600/0046
Link; 47: https://xubster.com/users/546/12601/0047
Link; 48: https://xubster.com/users/546/12602/0048
Link; 49: https://xubster.com/users/546/12603/0049
Link; 50: https://xubster.com/users/546/12604/0050

Teen Models
Japanese Teen Girl in WebCam Show After School
MISS VIKKI - TEEN RUSSIAN MODEL
Little Miss Vikki From Russia -- My Private Collection
Mattie Doll -- Horny Teen With a Talent for Sharing Sensational Orgasmes
Kyutty Kitty -- Asian Sweety PussyCat
REAL VIDEOS OF SEXY TEEN MODEL Hentai-Cat
Effy Loweell -- Sexy Young Models With Small Tits

Alice MFC
Link; 51: https://xubster.com/users/546/12427

Alison Lil Baby
Link; 52: https://xubster.com/users/546/12428

Cute Mary
Link; 53: https://xubster.com/users/546/12429

Effy Loweell
Link; 54: https://xubster.com/users/546/12430

Hana Lily
Link; 55: https://xubster.com/users/546/12431

Hentai-Cat
Link; 56: https://xubster.com/users/546/12432

Hot Nesquik
Link; 57: https://xubster.com/users/546/12433

Katya Letova
Link; 58: https://xubster.com/users/546/12434

Koska Leska
Link; 59: https://xubster.com/users/546/12435

Kyutty
Link; 60: https://xubster.com/users/546/12436

Mattie Doll
Link; 61: https://xubster.com/users/546/12437

Miss Vikki
Link; 62: https://xubster.com/users/546/12438

Venus Kitty
Link; 63: https://xubster.com/users/546/12439

Your Wet Schoolgirl
Link; 64: https://xubster.com/users/546/12440

Non Nude Tiktok Teens
Teen Cute Girls talk, sexy dance and play on cam
Link; 65: https://xubster.com/users/546/12452/0065
Link; 66: https://xubster.com/users/546/12507/0066
Link; 67: https://xubster.com/users/546/12508/0067
Link; 68: https://xubster.com/users/546/12509/0068
Link; 69: https://xubster.com/users/546/12510/0069
Link; 70: https://xubster.com/users/546/12511/0070
Link; 71: https://xubster.com/users/546/12512/0071
Link; 72: https://xubster.com/users/546/12513/0072
Link; 73: https://xubster.com/users/546/12514/0073
Link; 74: https://xubster.com/users/546/12515/0074
Link; 75: https://xubster.com/users/546/12516/0075
Link; 76: https://xubster.com/users/546/12517/0076

Nudism Young Girls
Link; 77: https://xubster.com/users/546/12453/0077
Link; 78: https://xubster.com/users/546/12518/0078
Link; 79: https://xubster.com/users/546/12519/0079
Link; 80: https://xubster.com/users/546/12520/0080
Link; 81: https://xubster.com/users/546/12521/0081
Link; 82: https://xubster.com/users/546/12522/0082
Link; 83: https://xubster.com/users/546/12523/0083

Russian Family Incest
Incest family teens
Link; 84: https://xubster.com/users/546/12454/0084
Link; 85: https://xubster.com/users/546/12524/0085
Link; 86: https://xubster.com/users/546/12525/0086
Link; 87: https://xubster.com/users/546/12526/0087
Link; 88: https://xubster.com/users/546/12527/0088
Link; 89: https://xubster.com/users/546/12528/0089
Link; 90: https://xubster.com/users/546/12529/0090
Link; 91: https://xubster.com/users/546/12530/0091

Real Spycam - Hiddencam
Link; 92: https://xubster.com/users/546/12455/0092
Link; 93: https://xubster.com/users/546/12531/0093
Link; 94: https://xubster.com/users/546/12532/0094
Link; 95: https://xubster.com/users/546/12533/0095
Link; 96: https://xubster.com/users/546/12534/0096
Link; 97: https://xubster.com/users/546/12535/0097
Link; 98: https://xubster.com/users/546/12536/0098
Link; 99: https://xubster.com/users/546/12537/0099
Link; 100: https://xubster.com/users/546/12538/0100
Link; 101: https://xubster.com/users/546/12539/0101
Link; 102: https://xubster.com/users/546/12540/0102
Link; 103: https://xubster.com/users/546/12541/0103

Tight Teen Pussy
FUCK TIGHT TEEN PUSSY - Real Fuck Extreme Small Teen Pussy - 18+
FULL HD 83 Hot Home Made Videos of Real Extreme Fuck Small Teen Pussy
Link; 104: https://xubster.com/users/546/12456/0104

Random Tiktok Girls
Link; 105: https://xubster.com/users/546/12457/0105
Link; 106: https://xubster.com/users/546/12542/0106
Link; 107: https://xubster.com/users/546/12543/0107
Link; 108: https://xubster.com/users/546/12544/0108
Link; 109: https://xubster.com/users/546/12545/0109
Link; 110: https://xubster.com/users/546/12546/0110
Link; 111: https://xubster.com/users/546/12547/0111
Link; 112: https://xubster.com/users/546/12548/0112
Link; 113: https://xubster.com/users/546/12549/0113
Link; 114: https://xubster.com/users/546/12550/0114
Link; 115: https://xubster.com/users/546/12551/0115
Link; 116: https://xubster.com/users/546/12552/0116
Link; 117: https://xubster.com/users/546/12553/0117
Link; 118: https://xubster.com/users/546/12554/0118

Skype and Omegle Girls
Link; 119: https://xubster.com/users/546/12459/0119
Link; 120: https://xubster.com/users/546/12555/0120
Link; 121: https://xubster.com/users/546/12556/0121
Link; 122: https://xubster.com/users/546/12557/0122
Link; 123: https://xubster.com/users/546/12558/0123
Link; 124: https://xubster.com/users/546/12559/0124
Link; 125: https://xubster.com/users/546/12560/0125
Link; 126: https://xubster.com/users/546/12561/0126
Link; 127: https://xubster.com/users/546/12562/0127
Link; 128: https://xubster.com/users/546/12563/0128
Link; 129: https://xubster.com/users/546/12564/0129
Link; 130: https://xubster.com/users/546/12565/0130

Tiktok Nude Girls
Link; 131: https://xubster.com/users/546/12460/0131
Link; 132: https://xubster.com/users/546/12566/0132
Link; 133: https://xubster.com/users/546/12567/0133
Link; 134: https://xubster.com/users/546/12568/0134
Link; 135: https://xubster.com/users/546/12569/0135
Link; 136: https://xubster.com/users/546/12570/0136
Link; 137: https://xubster.com/users/546/12571/0137
Link; 138: https://xubster.com/users/546/12572/0138
Link; 139: https://xubster.com/users/546/12573/0139
Link; 140: https://xubster.com/users/546/12574/0140
Link; 141: https://xubster.com/users/546/12575/0141
Link; 142: https://xubster.com/users/546/12576/0142
Link; 143: https://xubster.com/users/546/12577/0143
Link; 144: https://xubster.com/users/546/12578/0144
Link; 145: https://xubster.com/users/546/12579/0145

Webcam Teens and Couples
Link; 146: https://xubster.com/users/546/12461/0146
Link; 147: https://xubster.com/users/546/12580/0147
Link; 148: https://xubster.com/users/546/12581/0148
Link; 149: https://xubster.com/users/546/12582/0149
Link; 150: https://xubster.com/users/546/12583/0150
Link; 151: https://xubster.com/users/546/12584/0151
Link; 152: https://xubster.com/users/546/12585/0152
Link; 153: https://xubster.com/users/546/12586/0153
Link; 154: https://xubster.com/users/546/12587/0154
Link; 155: https://xubster.com/users/546/12588/0155
Link; 156: https://xubster.com/users/546/12589/0156
Link; 157: https://xubster.com/users/546/12590/0157

Rape Porn; Free Porn Videos; HD - VR Sex Videos
Link; 158: https://xubster.com/users/546/6261/001

Snuff Porn Videos; Fake murders and decapitation
Link; 159: https://xubster.com/users/546/6265/002

Forced Porn; Forced Sex - Forced To Fuck Videos
Link; 160: https://xubster.com/users/546/6266/003

Hot Asian Teen Sex Videos; Japanese and Korean Porn Movies
Link; 161: https://xubster.com/users/546/6262/004

Sleeping Girl Gets An Unexpected Visit Late At Night
Sex Sleeping Girl Porn Videos
Link; 162: https://xubster.com/users/546/6296/005

Lesbian Necrophilia Porn Videos
Link; 163: https://xubster.com/users/546/6290/006

Horror Porn Videos - Sex Movies
Link; 164: https://xubster.com/users/546/6295/007

Sex Gay Porn Videos
Link; 165: https://xubster.com/users/546/6281/008

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

3D, Hentai, Free Games

Download from Daofile.com:
Link: https://daofile.com/go/p47ssveuv75c

Sex Cartoons; Free Games; Hentai; Manga; 3D

Download: MegaPack; 367249 Files:
Link: https://file.al/public/56284/38916

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://xubster.com/users/546/12061

HD Young Nudists PN Videos

Download from Xubster.com:
Link: https://xubster.com/users/546/12062
Link: https://xubster.com/users/546/12067

PN Teen Girls; Young Adult Nudism; Teen Nudist Sex:

Download: MegaPack; 83150 Files:
Link: https://file.al/public/56284/38915

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Private Collection; Real Teen Sexy Selfies and Videos

Download: MegaPack; 192851 Files:
Link: https://file.al/public/56284/38917

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://daofile.com/go/efb4i0wyu73a

TukTuk Patrol - Thai Teen Video:

Download from Daofile.com:
Link: https://daofile.com/go/0ackk6rwv5gq

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Girls and Boys PT - Photo and Video

Download: MegaPack; 531498 Files:
Link: https://file.al/public/56284/39650

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

VIP: - Young Nude Vagina
Link; 1: https://daofile.com/go/58017o3w2wa1

VIP: - Taboo Teen Archive
Link; 2: https://daofile.com/go/at6nq7tzdrwq
Link; 3: https://daofile.com/go/uqvdfvlt1b7j

VIP: - Private Sex Orgy; - Self Teen Girls
Link; 4: https://daofile.com/go/rwmcfthjrcew
Link; 5: https://daofile.com/go/7x4q0mtks6bo

Young Teen Bathing Suit Videos and HD Footage
Asian Woman In Bathroom Videos and HD Footage
Japanese Bath Culture, Public Bath
Link; 6: https://daofile.com/go/zvcjqfm0s50w
Link; 7: https://daofile.com/go/62mt4oaxq78n
Link; 8: https://daofile.com/go/x1q0iheql2ym
Link; 9: https://daofile.com/go/c9d7xs7fsme6
Link; 10: https://daofile.com/go/0pza6o1prc3r
Link; 11: https://daofile.com/go/s6qkgi10c7tf
Link; 12: https://daofile.com/go/1mg548npuj9p
Link; 13: https://daofile.com/go/piif3sxzu7y4

Japanese Teen HD Sex Porn Videos
Japanese School Girl Full Movie Porn videos
Japanese teen jav xxx sex school asian big tits milf mom sister porn HD
Link; 14: https://daofile.com/go/ws3qwum15koi
Link; 15: https://daofile.com/go/z9k8qssuw74c
Link; 16: https://daofile.com/go/r2pmntlq6vkp
Link; 17: https://daofile.com/go/r9khigu0c0xe
Link; 18: https://daofile.com/go/5qfkaafzvk0k
Link; 19: https://daofile.com/go/st4jcfg1g9bz
Link; 20: https://daofile.com/go/4hvigt8dchbc

Selfie teens
Real teens sexy selfies, show teen tits
Link; 21: https://daofile.com/go/dlfstx2s3mv3
Link; 22: https://daofile.com/go/3i181cjpm77j
Link; 23: https://daofile.com/go/ccyhj01bdnmg
Link; 24: https://daofile.com/go/gh7snep8cn54

Collection of Teen Sex and Erotic Videos
Link; 25: https://daofile.com/go/kun7aw1l0sxy
Link; 26: https://daofile.com/go/u9jikdewbmen
Link; 27: https://daofile.com/go/sxflclskqlde
Link; 28: https://daofile.com/go/htsmkg04kkop
Link; 29: https://daofile.com/go/daq9svwypcpg
Link; 30: https://daofile.com/go/d26g52rcnyql
Link; 31: https://daofile.com/go/4msqlcw96jyf
Link; 32: https://daofile.com/go/a6vapjguf0x7
Link; 33: https://daofile.com/go/937pupbznnt1

Webcam Teen
Teen Erotic Videos From Real Life Cams - Omegle teen, Skype teen
Link; 34: https://daofile.com/go/e2nnzbuhjt5z
Link; 35: https://daofile.com/go/nz1tewuygcr1
Link; 36: https://daofile.com/go/23sfxojnkhlc
Link; 37: https://daofile.com/go/31lpybl6312o
Link; 38: https://daofile.com/go/ahtftflfq6gl
Link; 39: https://daofile.com/go/5xcpj94xj6tw
Link; 40: https://daofile.com/go/gyshuzhg00l8
Link; 41: https://daofile.com/go/kr3zaonpkf4p
Link; 42: https://daofile.com/go/cl923bdxvs9k
Link; 43: https://daofile.com/go/3burlwssg7py
Link; 44: https://daofile.com/go/e12thco5doao

Young Girls and Boys Make Real Hot Sex on Cam
Link; 45: https://daofile.com/go/k0ws7lypjw5c
Link; 46: https://daofile.com/go/w96f0hj7ym8t

Sex Machine Porn Videos
Link; 47: https://daofile.com/go/psc0hbsfch2w
Link; 48: https://daofile.com/go/xet9s4b8l1n0

Candy-Dolls; Teen Crazy Girls Gallery
Link; 49: https://daofile.com/go/ka68my4wdqca
Link; 50: https://daofile.com/go/wwiaf2oaavgp

Toilet HD Videos - Hidden cams in toilets film every amateur comer
Watch Public toilet spy cam of girls pissing of Best Collection Voyeur Porn videos
Medical And Gyno Voyeur Videos
Watch Medical voyeur cam shooting
Asian explored in the gyno office of Best Collection Voyeur Porn videos
Link; 51: https://daofile.com/go/71feh10vjrfe
Link; 52: https://daofile.com/go/osxvp1epjyam
Link; 53: https://daofile.com/go/ylhuc48hu73l
Link; 54: https://daofile.com/go/5lx4gmnok82y
Link; 55: https://daofile.com/go/u13oih6vbrjc
Link; 56: https://daofile.com/go/s3a5qk1p5cyw

Tokyo-Dolls - Sexy Teen Girls - Full Collection
Link; 57: https://daofile.com/go/y9w47mnulyw1

Galitsin Teen - TP Sex Videos i7149
Link; 58: https://daofile.com/go/6uttrr3le10n
Link; 59: https://daofile.com/go/sjatsg7tjroi
Link; 60: https://daofile.com/go/1gx4d40cf40w
Link; 61: https://daofile.com/go/mu8hlmao4fge
Link; 62: https://daofile.com/go/phu0sv1tgx9c
Link; 63: https://daofile.com/go/z6oa86xp644b

Candid HD
Link; 64: https://daofile.com/go/1piz0c48n4p3

Femdom BDSM;
Link; 65: https://daofile.com/go/u6w29zcyys0c

Nonude Models
Link; 66: https://daofile.com/go/nnxix879th8k

Nudi-Pageant
Link; 67: https://daofile.com/go/nxnme8zrveru

TTL and YFM Teen Latinas Models
Link; 68: http://daofile.com/go/wlpk7947rax3

*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls - Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls, ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

___________________
___________________

Reply | Threaded
Open this post in threaded view
|

Re: How to create a customised results table and add data to it within a macro

Aimee2158
In reply to this post by Stein Rørvik

Covid; 2017 - 2030 Girls and Boys - Russian Family Incest -- Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls -- Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls; ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens.
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

Log In or Sign Up; Link: https://xubster.com/free546.html

Amateur Young Girls
Link; 1: https://xubster.com/users/546/12421/0001
Link; 2: https://xubster.com/users/546/12462/0002
Link; 3: https://xubster.com/users/546/12463/0003
Link; 4: https://xubster.com/users/546/12464/0004
Link; 5: https://xubster.com/users/546/12465/0005
Link; 6: https://xubster.com/users/546/12466/0006
Link; 7: https://xubster.com/users/546/12467/0007
Link; 8: https://xubster.com/users/546/12468/0008
Link; 9: https://xubster.com/users/546/12469/0009
Link; 10: https://xubster.com/users/546/12470/0010
Link; 11: https://xubster.com/users/546/12471/0011
Link; 12: https://xubster.com/users/546/12472/0012

Covid: 2017 - 2030 - Girls and Boys
Link; 13: https://xubster.com/users/546/12422/0013
Link; 14: https://xubster.com/users/546/12473/0014

18 yo Teens Only
Innocent sweethearts star in 18 year old sex scenes
with their tight cunts filled by big cocks
Sexy coeds give hot blowjobs and swallow cum
Teens, Hardcore, Large Shlong, Amateur eighteen Years Old
18 year old masturbates on cam
Horny Teen 19 Years Old Masturbating On Web Cam
Only fingers filling my pussy to orgasm
Link; 15: https://xubster.com/users/546/12423/0015
Link; 16: https://xubster.com/users/546/12474/0016
Link; 17: https://xubster.com/users/546/12475/0017
Link; 18: https://xubster.com/users/546/12476/0018
Link; 19: https://xubster.com/users/546/12477/0019

Asian Tiktok Teens
Link; 20: https://xubster.com/users/546/12424/0020
Link; 21: https://xubster.com/users/546/12479/0021
Link; 22: https://xubster.com/users/546/12480/0022
Link; 23: https://xubster.com/users/546/12481/0023
Link; 24: https://xubster.com/users/546/12482/0024
Link; 25: https://xubster.com/users/546/12483/0025
Link; 26: https://xubster.com/users/546/12484/0026
Link; 27: https://xubster.com/users/546/12485/0027
Link; 28: https://xubster.com/users/546/12486/0028
Link; 29: https://xubster.com/users/546/12487/0029
Link; 30: https://xubster.com/users/546/12488/0030
Link; 31: https://xubster.com/users/546/12489/0031

Real Life Cam
Teen and Young Girls and Couples
Voyeur Villa Nelly Doggystyle HD Sex
Real Private Life on WebCam
Categories: Voyeur Sex, WebCam Porn, SpyCam Fetish
Teen Cam, Young Couples, Exhibitionism Video, Young Public Sex
WebCam Public Sex, Masturbation Teens, TeenSex
Link; 32: https://xubster.com/users/546/12418/0032
Link; 33: https://xubster.com/users/546/12490/0033
Link; 34: https://xubster.com/users/546/12491/0034
Link; 35: https://xubster.com/users/546/12492/0035
Link; 36: https://xubster.com/users/546/12493/0036
Link; 37: https://xubster.com/users/546/12494/0037

Porn Tiktok 18+ Banned on TikTok
Link; 38: https://xubster.com/users/546/12592/0038
Link; 39: https://xubster.com/users/546/12593/0039
Link; 40: https://xubster.com/users/546/12594/0040
Link; 41: https://xubster.com/users/546/12595/0041
Link; 42: https://xubster.com/users/546/12596/0042
Link; 43: https://xubster.com/users/546/12597/0043
Link; 44: https://xubster.com/users/546/12598/0044
Link; 45: https://xubster.com/users/546/12599/0045
Link; 46: https://xubster.com/users/546/12600/0046
Link; 47: https://xubster.com/users/546/12601/0047
Link; 48: https://xubster.com/users/546/12602/0048
Link; 49: https://xubster.com/users/546/12603/0049
Link; 50: https://xubster.com/users/546/12604/0050

Teen Models
Japanese Teen Girl in WebCam Show After School
MISS VIKKI - TEEN RUSSIAN MODEL
Little Miss Vikki From Russia -- My Private Collection
Mattie Doll -- Horny Teen With a Talent for Sharing Sensational Orgasmes
Kyutty Kitty -- Asian Sweety PussyCat
REAL VIDEOS OF SEXY TEEN MODEL Hentai-Cat
Effy Loweell -- Sexy Young Models With Small Tits

Alice MFC
Link; 51: https://xubster.com/users/546/12427

Alison Lil Baby
Link; 52: https://xubster.com/users/546/12428

Cute Mary
Link; 53: https://xubster.com/users/546/12429

Effy Loweell
Link; 54: https://xubster.com/users/546/12430

Hana Lily
Link; 55: https://xubster.com/users/546/12431

Hentai-Cat
Link; 56: https://xubster.com/users/546/12432

Hot Nesquik
Link; 57: https://xubster.com/users/546/12433

Katya Letova
Link; 58: https://xubster.com/users/546/12434

Koska Leska
Link; 59: https://xubster.com/users/546/12435

Kyutty
Link; 60: https://xubster.com/users/546/12436

Mattie Doll
Link; 61: https://xubster.com/users/546/12437

Miss Vikki
Link; 62: https://xubster.com/users/546/12438

Venus Kitty
Link; 63: https://xubster.com/users/546/12439

Your Wet Schoolgirl
Link; 64: https://xubster.com/users/546/12440

Non Nude Tiktok Teens
Teen Cute Girls talk, sexy dance and play on cam
Link; 65: https://xubster.com/users/546/12452/0065
Link; 66: https://xubster.com/users/546/12507/0066
Link; 67: https://xubster.com/users/546/12508/0067
Link; 68: https://xubster.com/users/546/12509/0068
Link; 69: https://xubster.com/users/546/12510/0069
Link; 70: https://xubster.com/users/546/12511/0070
Link; 71: https://xubster.com/users/546/12512/0071
Link; 72: https://xubster.com/users/546/12513/0072
Link; 73: https://xubster.com/users/546/12514/0073
Link; 74: https://xubster.com/users/546/12515/0074
Link; 75: https://xubster.com/users/546/12516/0075
Link; 76: https://xubster.com/users/546/12517/0076

Nudism Young Girls
Link; 77: https://xubster.com/users/546/12453/0077
Link; 78: https://xubster.com/users/546/12518/0078
Link; 79: https://xubster.com/users/546/12519/0079
Link; 80: https://xubster.com/users/546/12520/0080
Link; 81: https://xubster.com/users/546/12521/0081
Link; 82: https://xubster.com/users/546/12522/0082
Link; 83: https://xubster.com/users/546/12523/0083

Russian Family Incest
Incest family teens
Link; 84: https://xubster.com/users/546/12454/0084
Link; 85: https://xubster.com/users/546/12524/0085
Link; 86: https://xubster.com/users/546/12525/0086
Link; 87: https://xubster.com/users/546/12526/0087
Link; 88: https://xubster.com/users/546/12527/0088
Link; 89: https://xubster.com/users/546/12528/0089
Link; 90: https://xubster.com/users/546/12529/0090
Link; 91: https://xubster.com/users/546/12530/0091

Real Spycam - Hiddencam
Link; 92: https://xubster.com/users/546/12455/0092
Link; 93: https://xubster.com/users/546/12531/0093
Link; 94: https://xubster.com/users/546/12532/0094
Link; 95: https://xubster.com/users/546/12533/0095
Link; 96: https://xubster.com/users/546/12534/0096
Link; 97: https://xubster.com/users/546/12535/0097
Link; 98: https://xubster.com/users/546/12536/0098
Link; 99: https://xubster.com/users/546/12537/0099
Link; 100: https://xubster.com/users/546/12538/0100
Link; 101: https://xubster.com/users/546/12539/0101
Link; 102: https://xubster.com/users/546/12540/0102
Link; 103: https://xubster.com/users/546/12541/0103

Tight Teen Pussy
FUCK TIGHT TEEN PUSSY - Real Fuck Extreme Small Teen Pussy - 18+
FULL HD 83 Hot Home Made Videos of Real Extreme Fuck Small Teen Pussy
Link; 104: https://xubster.com/users/546/12456/0104

Random Tiktok Girls
Link; 105: https://xubster.com/users/546/12457/0105
Link; 106: https://xubster.com/users/546/12542/0106
Link; 107: https://xubster.com/users/546/12543/0107
Link; 108: https://xubster.com/users/546/12544/0108
Link; 109: https://xubster.com/users/546/12545/0109
Link; 110: https://xubster.com/users/546/12546/0110
Link; 111: https://xubster.com/users/546/12547/0111
Link; 112: https://xubster.com/users/546/12548/0112
Link; 113: https://xubster.com/users/546/12549/0113
Link; 114: https://xubster.com/users/546/12550/0114
Link; 115: https://xubster.com/users/546/12551/0115
Link; 116: https://xubster.com/users/546/12552/0116
Link; 117: https://xubster.com/users/546/12553/0117
Link; 118: https://xubster.com/users/546/12554/0118

Skype and Omegle Girls
Link; 119: https://xubster.com/users/546/12459/0119
Link; 120: https://xubster.com/users/546/12555/0120
Link; 121: https://xubster.com/users/546/12556/0121
Link; 122: https://xubster.com/users/546/12557/0122
Link; 123: https://xubster.com/users/546/12558/0123
Link; 124: https://xubster.com/users/546/12559/0124
Link; 125: https://xubster.com/users/546/12560/0125
Link; 126: https://xubster.com/users/546/12561/0126
Link; 127: https://xubster.com/users/546/12562/0127
Link; 128: https://xubster.com/users/546/12563/0128
Link; 129: https://xubster.com/users/546/12564/0129
Link; 130: https://xubster.com/users/546/12565/0130

Tiktok Nude Girls
Link; 131: https://xubster.com/users/546/12460/0131
Link; 132: https://xubster.com/users/546/12566/0132
Link; 133: https://xubster.com/users/546/12567/0133
Link; 134: https://xubster.com/users/546/12568/0134
Link; 135: https://xubster.com/users/546/12569/0135
Link; 136: https://xubster.com/users/546/12570/0136
Link; 137: https://xubster.com/users/546/12571/0137
Link; 138: https://xubster.com/users/546/12572/0138
Link; 139: https://xubster.com/users/546/12573/0139
Link; 140: https://xubster.com/users/546/12574/0140
Link; 141: https://xubster.com/users/546/12575/0141
Link; 142: https://xubster.com/users/546/12576/0142
Link; 143: https://xubster.com/users/546/12577/0143
Link; 144: https://xubster.com/users/546/12578/0144
Link; 145: https://xubster.com/users/546/12579/0145

Webcam Teens and Couples
Link; 146: https://xubster.com/users/546/12461/0146
Link; 147: https://xubster.com/users/546/12580/0147
Link; 148: https://xubster.com/users/546/12581/0148
Link; 149: https://xubster.com/users/546/12582/0149
Link; 150: https://xubster.com/users/546/12583/0150
Link; 151: https://xubster.com/users/546/12584/0151
Link; 152: https://xubster.com/users/546/12585/0152
Link; 153: https://xubster.com/users/546/12586/0153
Link; 154: https://xubster.com/users/546/12587/0154
Link; 155: https://xubster.com/users/546/12588/0155
Link; 156: https://xubster.com/users/546/12589/0156
Link; 157: https://xubster.com/users/546/12590/0157

Rape Porn; Free Porn Videos; HD - VR Sex Videos
Link; 158: https://xubster.com/users/546/6261/001

Snuff Porn Videos; Fake murders and decapitation
Link; 159: https://xubster.com/users/546/6265/002

Forced Porn; Forced Sex - Forced To Fuck Videos
Link; 160: https://xubster.com/users/546/6266/003

Hot Asian Teen Sex Videos; Japanese and Korean Porn Movies
Link; 161: https://xubster.com/users/546/6262/004

Sleeping Girl Gets An Unexpected Visit Late At Night
Sex Sleeping Girl Porn Videos
Link; 162: https://xubster.com/users/546/6296/005

Lesbian Necrophilia Porn Videos
Link; 163: https://xubster.com/users/546/6290/006

Horror Porn Videos - Sex Movies
Link; 164: https://xubster.com/users/546/6295/007

Sex Gay Porn Videos
Link; 165: https://xubster.com/users/546/6281/008

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

3D, Hentai, Free Games

Download from Daofile.com:
Link: https://daofile.com/go/p47ssveuv75c

Sex Cartoons; Free Games; Hentai; Manga; 3D

Download: MegaPack; 367249 Files:
Link: https://file.al/public/56284/38916

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://xubster.com/users/546/12061

HD Young Nudists PN Videos

Download from Xubster.com:
Link: https://xubster.com/users/546/12062
Link: https://xubster.com/users/546/12067

PN Teen Girls; Young Adult Nudism; Teen Nudist Sex:

Download: MegaPack; 83150 Files:
Link: https://file.al/public/56284/38915

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Private Collection; Real Teen Sexy Selfies and Videos

Download: MegaPack; 192851 Files:
Link: https://file.al/public/56284/38917

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Preview Video
Link: https://daofile.com/go/efb4i0wyu73a

TukTuk Patrol - Thai Teen Video:

Download from Daofile.com:
Link: https://daofile.com/go/0ackk6rwv5gq

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

Girls and Boys PT - Photo and Video

Download: MegaPack; 531498 Files:
Link: https://file.al/public/56284/39650

:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:

VIP: - Young Nude Vagina
Link; 1: https://daofile.com/go/58017o3w2wa1

VIP: - Taboo Teen Archive
Link; 2: https://daofile.com/go/at6nq7tzdrwq
Link; 3: https://daofile.com/go/uqvdfvlt1b7j

VIP: - Private Sex Orgy; - Self Teen Girls
Link; 4: https://daofile.com/go/rwmcfthjrcew
Link; 5: https://daofile.com/go/7x4q0mtks6bo

Young Teen Bathing Suit Videos and HD Footage
Asian Woman In Bathroom Videos and HD Footage
Japanese Bath Culture, Public Bath
Link; 6: https://daofile.com/go/zvcjqfm0s50w
Link; 7: https://daofile.com/go/62mt4oaxq78n
Link; 8: https://daofile.com/go/x1q0iheql2ym
Link; 9: https://daofile.com/go/c9d7xs7fsme6
Link; 10: https://daofile.com/go/0pza6o1prc3r
Link; 11: https://daofile.com/go/s6qkgi10c7tf
Link; 12: https://daofile.com/go/1mg548npuj9p
Link; 13: https://daofile.com/go/piif3sxzu7y4

Japanese Teen HD Sex Porn Videos
Japanese School Girl Full Movie Porn videos
Japanese teen jav xxx sex school asian big tits milf mom sister porn HD
Link; 14: https://daofile.com/go/ws3qwum15koi
Link; 15: https://daofile.com/go/z9k8qssuw74c
Link; 16: https://daofile.com/go/r2pmntlq6vkp
Link; 17: https://daofile.com/go/r9khigu0c0xe
Link; 18: https://daofile.com/go/5qfkaafzvk0k
Link; 19: https://daofile.com/go/st4jcfg1g9bz
Link; 20: https://daofile.com/go/4hvigt8dchbc

Selfie teens
Real teens sexy selfies, show teen tits
Link; 21: https://daofile.com/go/dlfstx2s3mv3
Link; 22: https://daofile.com/go/3i181cjpm77j
Link; 23: https://daofile.com/go/ccyhj01bdnmg
Link; 24: https://daofile.com/go/gh7snep8cn54

Collection of Teen Sex and Erotic Videos
Link; 25: https://daofile.com/go/kun7aw1l0sxy
Link; 26: https://daofile.com/go/u9jikdewbmen
Link; 27: https://daofile.com/go/sxflclskqlde
Link; 28: https://daofile.com/go/htsmkg04kkop
Link; 29: https://daofile.com/go/daq9svwypcpg
Link; 30: https://daofile.com/go/d26g52rcnyql
Link; 31: https://daofile.com/go/4msqlcw96jyf
Link; 32: https://daofile.com/go/a6vapjguf0x7
Link; 33: https://daofile.com/go/937pupbznnt1

Webcam Teen
Teen Erotic Videos From Real Life Cams - Omegle teen, Skype teen
Link; 34: https://daofile.com/go/e2nnzbuhjt5z
Link; 35: https://daofile.com/go/nz1tewuygcr1
Link; 36: https://daofile.com/go/23sfxojnkhlc
Link; 37: https://daofile.com/go/31lpybl6312o
Link; 38: https://daofile.com/go/ahtftflfq6gl
Link; 39: https://daofile.com/go/5xcpj94xj6tw
Link; 40: https://daofile.com/go/gyshuzhg00l8
Link; 41: https://daofile.com/go/kr3zaonpkf4p
Link; 42: https://daofile.com/go/cl923bdxvs9k
Link; 43: https://daofile.com/go/3burlwssg7py
Link; 44: https://daofile.com/go/e12thco5doao

Young Girls and Boys Make Real Hot Sex on Cam
Link; 45: https://daofile.com/go/k0ws7lypjw5c
Link; 46: https://daofile.com/go/w96f0hj7ym8t

Sex Machine Porn Videos
Link; 47: https://daofile.com/go/psc0hbsfch2w
Link; 48: https://daofile.com/go/xet9s4b8l1n0

Candy-Dolls; Teen Crazy Girls Gallery
Link; 49: https://daofile.com/go/ka68my4wdqca
Link; 50: https://daofile.com/go/wwiaf2oaavgp

Toilet HD Videos - Hidden cams in toilets film every amateur comer
Watch Public toilet spy cam of girls pissing of Best Collection Voyeur Porn videos
Medical And Gyno Voyeur Videos
Watch Medical voyeur cam shooting
Asian explored in the gyno office of Best Collection Voyeur Porn videos
Link; 51: https://daofile.com/go/71feh10vjrfe
Link; 52: https://daofile.com/go/osxvp1epjyam
Link; 53: https://daofile.com/go/ylhuc48hu73l
Link; 54: https://daofile.com/go/5lx4gmnok82y
Link; 55: https://daofile.com/go/u13oih6vbrjc
Link; 56: https://daofile.com/go/s3a5qk1p5cyw

Tokyo-Dolls - Sexy Teen Girls - Full Collection
Link; 57: https://daofile.com/go/y9w47mnulyw1

Galitsin Teen - TP Sex Videos i7149
Link; 58: https://daofile.com/go/6uttrr3le10n
Link; 59: https://daofile.com/go/sjatsg7tjroi
Link; 60: https://daofile.com/go/1gx4d40cf40w
Link; 61: https://daofile.com/go/mu8hlmao4fge
Link; 62: https://daofile.com/go/phu0sv1tgx9c
Link; 63: https://daofile.com/go/z6oa86xp644b

Candid HD
Link; 64: https://daofile.com/go/1piz0c48n4p3

Femdom BDSM;
Link; 65: https://daofile.com/go/u6w29zcyys0c

Nonude Models
Link; 66: https://daofile.com/go/nnxix879th8k

Nudi-Pageant
Link; 67: https://daofile.com/go/nxnme8zrveru

TTL and YFM Teen Latinas Models
Link; 68: http://daofile.com/go/wlpk7947rax3

*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*
.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*

Covid; 2017 - 2030 - Girls and Boys - Russian Family Incest - Private Video Collection
Young Girls and Boys Make Real Hot Sex on Cam; Private Video Collection:
ajb - Random Tiktok Girls -- Skype and Omegle Girls - Tiktok Nude Girls
New Videos - New Movies - Movie Reviews - Movie Trailers - TV
Russian Family Incest - Incest family teens
New Free Games - Private Sex Orgy - Self Teen Girls, ajb - Archive
Private Video Collection - Very Explicit Cams
18 yo Teens Only - Asian Tiktok Teens
Home Made Model TKM -- Real Life Cam

Download from Xubster-com:
Link: https://xubster.com/users/546/9802

Download from Daofile-com:
Link: https://daofile.com/go/3w4soyhvuake

Download from File-al:
Link: https://file.al/public/56284/31885

___________________

12