「ImageJマクロを使う」シリーズでは、ImageJを使って生命科学系の画像解析をするにあたって必要な知識をまとめていきます。
今回は、マクロを使って選択したディレクトリ内にサブフォルダがあるかどうかを確認するをできるようにしていきます。
基本的なif文の使い方、作り方をマスターしていきましょう。
「細胞の核を数える」シリーズで描いたフローチャートの「ココ」の部分をやっていきます。
imageJマクロのif文の構造
「もし〜だったら〇〇を実行する、そうでなければ××をする」という指令を書く場合に、 プログラミングでは「if文」を使います。
今回の場合だったら、「もし"chooseDir"の中にサブフォルダがあれば更に下の階層のフォルダを開く、そうでなければ"chooseDir"内のファイルを解析する」という指令です。
まずは、imageJマクロのif文の構造を簡単におさらいしておきましょう。
で、今回やりたいのは...
ピンクの四角で囲われた「サブフォルダがある」というのを条件式に設定していきます。
詳しいimageJマクロのif文とfor文についてもう少し詳しく知りたい方は、こちらの記事もご覧ください。
サブフォルダがある場合とない場合の違いは、「ファイルリストを出力した時に"/"で終わるものがあるかどうか?」です。
詳しくは、「ImageJマクロを使う #5」をご覧ください。
if文の条件式を書いていく
基本のif文を準備する
まずは、if文の大枠を書いていきます。
aの値を色々変えて、作ったif文が動くかどうかを確認しましょう。
ちゃんと動くif文が書けました。
条件式の検討
選択したディレクトリの中にサブフォルダがある場合とない場合の違いは、ファイルリストを出力した時に"/"で終わるかどうか?です。
取得したファイルリストに"/"で終わるものがあれば、命令文1の「サブフォルダがあります」を、なければ「サブフォルダがありません」とLog画面に表示されるようにします。
取得したファイルリストの「◯番目」を表示させるためには、変数名の後ろに"[◯]"をつけます。
リストの中で、"/"で終わるかどうか?を調べる関数が"endsWith"です。
実際に使ってみましょう。
サブフォルダがある場合には、"true"である"1"が返ってきました。
サブフォルダがない場合は、"false"である"0"が返ってきました。
これを、if文の条件式に組み込みます。
if文を書いて実行する
if文の条件式に"endsWith"を書いてきます。
"true"が返ってくる場合は、命令文1(「サブフォルダがあります」)が実行され、"false"の場合は命令文2(「サブフォルダはありません」)が実行される仕組みです。
作ったif文で「サブフォルダの有無」を分別できるようになりました。
次回は、解析結果に名前をつけて保存する方法をまとめていきます。