質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

341閲覧

IDLの言葉'WC'の意味が分からない

balckbell

総合スコア16

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/30 06:41

編集2018/12/01 03:43

###問題
こんにちは。IDLからPythonへ変換する作業を行なっている途中で、IDLで書かれたコードが理解できず詰まってしまいました。ソースコード(の一部)は以下の通りです。

IDL

1ifile='wave.txt' 2OPENR, luni, ifile, /GET_LUN 3WC, ifile, nwave 4db = DBLARR(3,nwave) 5READF, luni, db

テキストファイルを read in するために開き、array dbを作成したいのですが、WCで始まる行で何が起きているか分からず先に進めなくなってしまいました。
また、GET_LUNというシンタックスの意味もわからず調べてみたのですが、よく理解できず困っております。
是非お力を貸してください。よろしくお願いいたします。
足りない情報があると思いますので、何かあればおしらせください。

###動作環境
・macOS Mojave ver10.14
・Atomを使用

###タグについて
IDLのタグがなかったこと、IDLからPythonへの変換作業を行なっているということからPythonのタグを使用しました。

###補足(アメリカ時間 11月30日午後7:41)
IDLとはInteractive Data Languageの略で、主に天文物理学におけるデータ分析に用いられる言語です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

WC は can110 さんも御呈示の、 Harris Geospatial Solutions による 公式リファレンス に記載がないルーチンですので、 ユーザによって定義された独自の処理 と思われ、明確な意味はその処理を定義したソースを見つけない限りは不明なように思います。

ただ、 "wc" という GNU に同名のコマンドが存在する語であること、及びコードの意味合いからして、恐らくは 指定されたファイルの行数を数える 処理ではないでしょうか。実際、 wc というプロシージャ名で行カウント処理を実装している IDL のプロジェクト が存在しますし、他にも 同名の関数で同じような機能を実装している別のプロジェクト が見受けられます。

※今の IDL には FILE_LINES という関数がある ので、それが実装される以前の古い資産のようですね

仮に上記の通り、行カウントを行うプロシージャであるとした場合、コードは以下のように意味が通ると思われます。

; "wave.txt" には、毎行 1 つの wave が含まれ、 1 wave は 3 つの実数で表現されていると思われる ifile='wave.txt' ; 対象ファイル用の LUN を確保しつつ読み込みモードで開く OPENR, luni, ifile, /GET_LUN ; nwave (number of waves?) に "wave.txt" の行数、つまり wave 数を取得する WC, ifile, nwave ; (3 x wave 数) の 2 次元配列を作成する db = DBLARR(3,nwave) ; ファイルの LUN から作成した配列にデータを一気に読み込む READF, luni, db

尚、読み込み後はさらに複雑な処理が続くと思われますので、もし移植作業を続けるのでしたら、上記の公式リファレンスを一通り御読みになられた方が宜しいかと存じます。

投稿2018/12/03 09:08

argparse

総合スコア1017

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

balckbell

2018/12/06 07:00

ご回答ありがとうございます。また、返信が遅くなり申し訳ありません。 ソースコードとargparseさんの回答を見比べながら読み進めたところ、納得がいきました。実際、一行に三列含まれていて、argparseさんのおっしゃったことと完全に一致します。 コンパイルした後についての質問なのですが、WC, ifile, nwaveという部分があることで、コンパイルした時に元のデータに行番号が振られてターミナル上に表示されるのでしょうか?Pythonでコンパイルするところまではまだ進められていないので、実際に動かしてみた時にどのような表示が出るのか(どのような表示が出れば正解なのか)ということがわかりません。的外れな質問をしてしまっていたら申し訳ありません。お時間がある時にぜひ教えていただきたく思います。
argparse

2018/12/06 16:14

`WC` プロシージャの処理によって標準出力に元データが出力されるかどうかは、結局のところどう実装されているかに依存するため、分かりません。仮に「行カウントを行うルーチンを作成する」場面になったとして、私であればそのような出力を行う実装にはしないと思いますが、デバッグ用等の理由でそういう実装になっている可能性もまた否定できません。 今回、 IDL によって書かれた移植前のプログラムがコンパイル可能なのであれば、 `WC` の処理が書かれたソースコードもまた存在すると思われるので、そちらを探して確認することをお薦めします。
balckbell

2018/12/06 20:29

ご返信ありがとうございます。 完全にコード作成者の定義の仕方に依存するのですね。このコードが使われているのが多少特殊な研究なので、そのために新しいprocedureが必要だったのかもしれません。 残念ながらコードは4年前に作成されたもので、作成者に連絡を取ることもできないので、ソースコードを探してみようと思います。お力を貸してくださり、本当にありがとうございました。
guest

0

IDLとは何かすらよく分かっていませんが…
/GET_LUNについてはOPENR/OPENU/OPENWの中に

GET_LUN

Set this keyword to use the GET_LUN procedure to set the value of Unit before the file is opened. Instead of using the two statements:

と記載ありました。加えてGET_LUNの説明も参考になるかと思います。

WCについては見つけきれませんでしたが、以下から探すと見つかるかもしれません。
IDL Reference
IDLメモ

投稿2018/11/30 22:48

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

balckbell

2018/12/01 03:41

can110さん、今回もご回答ありがとうございます。 すみません、説明が足りませんでした。IDLはInteractive Data Languageの略で、天文物理学などのデータ分析で使われるのがほとんどだそうです。 リンクの共有もありがとうございました。もう一度調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問