ImageJ: How to put label names into results table generated by ROI Manager - imagej

I use ImageJ to measure length of different parts of biological organism. I draw straight or segmented line over image, add line to ROI Manager, and set name to it (rename the standard name of a label). After drawing some lines I measure them. The results (lines length) are put into table, and the first table column contains numbers, not label names.
How to put label names in this first column instead of numbers?
I know how to show label names with the name of image file as a prefix (like, image-file.jpg:labelA). In “Set Measurements” dialog check “Display Label” and new column “Label” will be added to result table.
But how to remove image file name from this column?

Tiago Ferreira, the author of "ROI Manager Tools" plugin for ImageJ, suggests the solution.
It is necessary to add the following macro to ImageJ that removes filename prefix from the label names in Results table.
macro "Rename Labels in Results Table" {
for (i=0; i<nResults; i++) {
oldLabel = getResultLabel(i);
delimiter = indexOf(oldLabel, ":");
newLabel = substring(oldLabel, delimiter+1);
setResult("Label", i, newLabel);
}
}
Save it to text file "Rename_Labels_in_Results_Table.txt" and put to "ImageJ\plugins\Analyze" directory.
Call it after the ROI manager's "Measure" command when the Results table is appeared. (Don't forget to set "Display Labels" checkbox in "Set Measurements" dialog before measurements.)

Related

How do i remove rows based on comma-separated list of values in a Power BI parameter in Power Query?

I have a list of data with a title column (among many other columns) and I have a Power BI parameter that has, for example, a value of "a,b,c". What I want to do is loop through the parameter's values and remove any rows that begin with those characters.
For example:
Title
a
b
c
d
Should become
Title
d
This comma separated list could have one value or it could have twenty. I know that I can turn the parameter into a list by using
parameterList = Text.Split(<parameter-name>,",")
but then I am unsure how to continue to use that to filter on. For one value I would just use
#"Filtered Rows" = Table.SelectRows(#"Table", each Text.StartsWith([key], <value-to-filter-on>))
but that only allows one value.
EDIT: I may have worded my original question poorly. The comma separated values in the parameterList can be any number of characters (e.g.: a,abcd,foo,bar) and I want to see if the value in [key] starts with that string of characters.
Try using List.Contains to check whether the starting character is in the parameter list.
each List.Contains(parameterList, Text.Start([key], 1)
Edit: Since you've changed the requirement, try this:
Table.SelectRows(
#"Table",
(C) => not List.AnyTrue(
List.Transform(
parameterList,
each Text.StartsWith(C[key], _)
)
)
)
For each row, this transforms the parameterList into a list of true/false values by checking if the current key starts with each text string in the list. If any are true, then List.AnyTrue returns true and we choose not to select that row.
Since you want to filter out all the values from the parameter, you can use something like:
= Table.SelectRows(#"Changed Type", each List.Contains(Parameter1,Text.Start([Title],1))=false)
Another way to do this would be to create a custom column in the table, which has the first character of title:
= Table.AddColumn(#"Changed Type", "FirstChar", each Text.Start([Title],1))
and then use this field in the filter step:
= Table.SelectRows(#"Added Custom", each List.Contains(Parameter1,[FirstChar])=false)
I tested this with a small sample set and it seems to be running fine. You can test both and see if it helps with the performance. If you are still facing performance issues, it would probably be easier if you can share the pbix file.
This seems to work fairly well:
= List.Select(Source[Title], each Text.Contains(Parameter1,Text.Start(_,1))=false)
Replace Source with the name of your table and Parameter1 with the name of your Parameter.

Teradata:Get a specific part of a large variable text field

My first Post: (be kind )
PROBLEM: I need to extract the View Name from a Text field that contains a full SQL Statements so I can link the field a different data source. There are two text strings that always exist on both sides of the target view. I was hoping to use these as identifying "anchors" along with a substring to bring in the View Name text from between them.
EXAMPLE:
from v_mktg_dm.**VIEWNAME** as lead_sql
(UPPER CASE/BOLD is what I want to extract)
I tried using
SELECT
SUBSTR(SQL_FIELD,INSTR(SQL_FIELD,'FROM V_MKTG_TRM_DM.',19),20) AS PARSED_FIELD
FROM DATABASE.SQL_STORAGE_DATA
But am not getting good results -
Any help is appreciated
You can apply a Regular Expression:
RegExp_Substr_gpl(SQL_FIELD, '(v_mktg_dm\.)(.*?)( AS lead_sql)',1,1,'i',2)
This looks for the string between 'v_mktg_dm.' and ' AS lead_sql'.
RegExp_Substr_gpl is an undocumented variation of RegExp_Substr which simplifies the syntax for ignoring parts of the match

How to change format / treat missing values in SPSS

I'm using SPSS modeler and I have a variable that the software recognizes as numeric. So the missing values are $null$. I want that the missing values of the variable are selectionable with '', as character.
So I would: or trasform the format of the variable from numeric to character or change only the missing values from $null$ to ''.
How can I fix?
thanks in advance
The best way to select null values in a numeric field is to use the #NULL() function from the Blanks and Null section of the Expression Builder.
For example, if you wanted to keep only the null values so that you could inspect them, you might use a Select node. Leave the radio button set as Include. Press the Expression Builder (calculator) button. Change the filter in the drop menu on the left side from General Functions to show Blanks and Null (press B 2 or 3 times). Double-click on #NULL(ITEM). Go to the right side and double-click on your numeric field name. Put a Table node at the end and run it.
Using Select #NULL in IBM SPSS Modeler
Another way to view just the null rows is to enter the #NULL(varname) function into the "Highlight records where" section of the Table dialog box.
"Highlight records where" dialog
When you run the table, any row that is true for this condition will be shown in red.
If you really need the variable to be a string, then use a Compute node to create a copy of this field under a new name and use the to_string() function in the Conversion section of the Expression Builder to change the type of the variable. Now you will be able to use the the Select node to grab "" as the missing value. Or you could use the Filler node to replace the column, but then you would not be able to compare before and after.
The dialog examples shown in this answer use this sample stream that is installed with your IBM SPSS Modeler software:
C:\Program Files\IBM\SPSS\Modeler\18.0\Demos\streams\featureselection.str
The easiest way to do it it's using the Fill node with the configurations:
A) FIELD
B) Condition = #NULL(#FIELD)
C) Replace by = ' '
This node will replace all $null$ for ' ' at the same variable chosen in option a.
I don't think you can customize how you visualize $nulls. (I know it's possible in SQL db though)
So I'd suggest that you work with the numbers and when you want to visualize or export the results, then turn the field to a string one then replace nulls:
Filled node > to_string(#FIELD)
Filler node > blank and nulls > #FIELD = ''

Listing two or more variables alongside each other

I want an alternative to running frequency for string variables because I also want to get a case number for each of the string value (I have a separate variable for case ID).
After reviewing the string values I will need to find them to recode which is the reason I need to know the case number.
I know that PRINT command should do what I want but I get an error - is there any alternative?
PRINT / id var2 .
EXECUTE.
>Error # 4743. Command name: PRINT
>The line width specified exceeds the output page width or the record length or
>the maximum record length of 2147483647. Reduce the number of variables or
>split the output line into several records.
>Execution of this command stops.
Try the LIST command.
I often use the TEMPORARY commond prior to the LIST command, as often there is only a small select of record of interest I may want to "list"/investigate.
For example, in the below, only to list the records where VAR2 is not a blank string.
TEMP.
SELECT IF (len(VAR2)>0).
LIST ID VAR2.
Alternatively, you could also (but dependent on having CUSTOM TABLES add-on module), do something like below which would get the results into a tabular format also (which may be preferable if then exporting to Excel, for example.
CTABLES /TABLE CTABLES /VLABELS VARIABLES=ALL DISPLAY=NONE
/TABLE A[C]>B[C]
/CATEGORIES VARIABLES=ALL EMPTY=EXCLUDE.

How to add multiple labels to a node in Neo4J when using Neo4jImport.bat

I am using Neo4jImport.bat to perform my initial database load. I have a node file that looks like this:
application_id:ID(application_id),:LABEL
2036983247,application_id
2037028183,application_id
I would like to (sometimes) add a second :suspect label to some of these rows. For example:
application_id:ID(application_id),:LABEL
2036983247,"application_id,suspect"
2037028183,application_id
Using the above format, the files will load successfully, however, when I try and query the data using cypher I run into issues. Specifically, the below queries return 0 results:
match (n:application_id {application_id:"2036983247"}) return *
match (n:suspect) return *
Whilst the query against the row with a single label works fine:
match (n:application_id {application_id:"2037028183"}) return *
To make it more confusing, the labels() function seems to correctly show the labels as expected being returned in an array for the app with multiple labels.
According to the import documentation on labels:
LABEL
Read one or more labels from this field. For multiple labels, the values are separated by the array delimiter.
What am I doing wrong?
Each :LABEL column can have multiple labels in them, separated by whatever --array-delimiter specifies (defaults to ';'). Also, as Robert mentioned, multiple :LABEL columns is also supported.
To add additional labels to a node, simply add an additional :LABEL header column for each additional label you wish to add.
application_id:ID(application_id),:LABEL,:LABEL
In the contents of the file, you then delimit your labels with whatever delimiter you are using:
2036983247,application_id,suspect
2037028183,application_id
Unlike properties, it seems that the import tool will allow :LABEL columns to be 'missing' (at least if they're the last column).

Resources