list包含某个字符串_ImageJ开发教程——字符串操作

a21b582317b117b66da3479bb0dd5601.png

字符串是一种文本的数据类型。在Macro语言当中,主要是指英文的双引号""中包括的字符。

字符串可以理解为字符的串联。在存储上,可以认为是一个字符数组,每一位的元素按照先后顺序都是可以提取的。

当我们需要利用Macro,提取其中某个元素,例如“Hello”这个单词,可以利用substring()这个函数,官网说明如下:

369f81edb3682a0aafaae62b8e03da69.png
string = "Hello World!"
print(substring(string, 0, 5))

fc35f7c36d1675930a3944aabec1f62a.png

Macro语言中,字符串的索引值是从 0 开始的,这里substring(string, 0, 5)正好选择了“Hello”这个词。

67c5303748a3fa5a9b99f87686f5c80f.png

如果substring只定义一个参数,例如substring(string, 6),则会从6开始,提取6以后所有的字符:

1ba18fd3967a456129f4069dc9ff85ec.png

Macro语言中有各种字符串操作的函数:

20f03e5454ae8dec82ad6b153a532e21.png
Macro Language​imagej.nih.gov
6b20579a87e02ddb3fbf768eaac13e51.png

图像的名称就属于字符串,在处理图像时往往需要根据图像名称的不同,对图像进行分类,进行不同的处理和测量。

这时候就需要提取字符串中的元素,并加以判断,从而进行不同的操作。

举一个例子,对不同的sample分别拍摄了细胞核(DAPI)和绿色荧光(GFP)两个通道的图片,最终一个sample包含三张图片:

d398d4345e96614b5960d449182356cc.png

怎样批量对细胞核图片进行自动细胞计数,对绿色荧光图片进行平均荧光强度的测量?

观察图片的命名可以发现,细胞核图片命名的结尾是"_ch00.tif",绿色荧光图片的命名是"_ch01.tif",通过判断图片名称的这一个标志,就可以区分这两类图片。


先上代码:

b6c1e50ff0e8b847e5670932b93a1218.png

最后分别得到细胞数以及平均荧光强度:

7f3cd011e7ca7fe966ca9ad1e3033608.png

这里的代码用到循环、条件语句与函数封装,可以复习:

Treasure琛:ImageJ开发教程——条件结构与像素遍历​zhuanlan.zhihu.com
062d1f8786569451c685e8942662964c.png
Treasure琛:ImageJ开发教程——函数封装​zhuanlan.zhihu.com
3acc54eda0990211113ffceb13518865.png

代码解析

代码可以分为三大部分:

一、获得所有图像名称(2-3行)

path 

选择路径后,利用getFileList()函数得到该文件夹中所有图片的名称,保存为list这个数组。

二、获得图像特征命名,加以判断后调用对于函数(4-19行)

for 

利用for循环遍历整个list,首先利用substring()函数,得到每个图像名称从9开始的所有字符,并保存到label这个字符串变量当中,其中包含了命名的特征。

然后对字符串进行判断:

如果字符串为"_ch00.tif",则该图片属于细胞核,调用Count_Num()这个自定义函数。

或者如果字符串为"_ch01.tif",则该图片属于绿色荧光,调用Measure_Fluo()这个自定义函数。

三、自定义函数(20-38行)

function 

与这篇文章的原理相同:

Treasure琛:ImageJ开发教程——函数封装​zhuanlan.zhihu.com
3acc54eda0990211113ffceb13518865.png

这里定义了两个函数,计算荧光强度(Measure_Fluo),以及自动细胞计数(Count_Num),调用时需要输入参数为title。

但这里需要注意增加了去除自带比例尺这一步骤:

run("Set Scale...","distance=0 known=0 pixel=1 unit=pixel");// Remove the scale

这一步主要是为了结果都以pixel为单位,好同类比较。


这篇文章的代码可以在GitHub下载到:

GitHub-ImageJ Tutorial​github.com
79e65fbd0f51356e3b8212dab97de253.png

如果对于ImageJ使用有什么问题可以私信我,或者给我发邮件:zhaoyc9@163.com

更多教程可以关注我的专栏:

ImageJ实用教程​zhuanlan.zhihu.com
733dc4c10a6ed5c9b547f8d431bce52c.png
ImageJ开发教程​zhuanlan.zhihu.com
449c73a3e2127a1e61492fc9c1d932f2.png

希望对大家有帮助~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值