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

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

ただいまの
回答率

90.33%

  • Python

    9209questions

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

  • Python 3.x

    7400questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 94

balckbell

score 8

問題

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

ifile='wave.txt'
OPENR, luni, ifile, /GET_LUN
WC, ifile, nwave
db = DBLARR(3,nwave)
READF, 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の略で、主に天文物理学におけるデータ分析に用いられる言語です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

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/06 16:00

    ご回答ありがとうございます。また、返信が遅くなり申し訳ありません。
    ソースコードとargparseさんの回答を見比べながら読み進めたところ、納得がいきました。実際、一行に三列含まれていて、argparseさんのおっしゃったことと完全に一致します。

    コンパイルした後についての質問なのですが、WC, ifile, nwaveという部分があることで、コンパイルした時に元のデータに行番号が振られてターミナル上に表示されるのでしょうか?Pythonでコンパイルするところまではまだ進められていないので、実際に動かしてみた時にどのような表示が出るのか(どのような表示が出れば正解なのか)ということがわかりません。的外れな質問をしてしまっていたら申し訳ありません。お時間がある時にぜひ教えていただきたく思います。

    キャンセル

  • 2018/12/07 01:14

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

    キャンセル

  • 2018/12/07 05:29

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

    キャンセル

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/12/01 12:41

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

    キャンセル

同じタグがついた質問を見る

  • Python

    9209questions

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

  • Python 3.x

    7400questions

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