C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: netCDFを読み込み,クロマトグラムを表示させる方法


(過去ログ 91 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■54357 / inTopicNo.1)  netCDFを読み込み,クロマトグラムを表示させる方法
  
□投稿者/ a04sa013 (1回)-(2010/10/14(Thu) 16:25:39)

分類:[VB.NET/VB2005 以降] 

この掲示板を使用するのは初めてです.
ぼくはVB .netを独学で学びはじめて1ヶ月くらいの人間です.
VB2008を用いて開発しています.

ぼくはいま,ガスクロマトグラフィ質量分析計を用いて代謝物の分析を行っているのですが,付属のソフトウェアではピーク認識,波形分離等がうまくいかないので,自分で作ってみたいと思っています.VB .netを使用する理由は,VBAの知識は豊富にあるからです.

やりたいことは,

netCDF形式のファイルを読み込みたい.

netCDFで読み込んだクロマトグラムデータを用いて,そのクロマトグラムをVBのフォーム上で表示させたい.

まずはここらへんから取り組みたいと思います.

が,やり方がまったくわかりません.

ネットに落ちていた,
http://www.mn-net.com/tabid/10845/default.aspx

の,netCDFを読み込むためのライブラリはダウンロードしました.

このライブラリの使い方,実際のnetCDFデータの取得方法等を教えていただけますでしょうか?
質問が抽象的ですので,なにかわからないことがあればご連絡ください.

よろしくお願い致します.

引用返信 編集キー/
■54370 / inTopicNo.2)  Re[1]: netCDFを読み込み,クロマトグラムを表示させる方法
□投稿者/ PATIO (28回)-(2010/10/15(Fri) 13:17:31)
2010/10/15(Fri) 13:23:53 編集(投稿者)

多分、学生さんかなと思いますが。

DLLがダウンロードできるページにサンプルソースらしき物がありますが、
その中身について見てみたでしょうか?
コメント等が英語だとは思いますが、英語の辞書を使って意味だけをとるつもりなら
読めない事は無いと思いますよ。英文法にしても学校の教科書が読める程度の知識が
あれば、文章の意味をとるだけなら十分役に立つはずです。

で、サンプルソースを見てもさっぱりわかりませんと言う話なら
VB.netの知識が足りないのではないかと思うので焦って前に進もうとしないで
VB.netの文法や基本的なプログラミング方法について勉強された方が良いと思います。
ここでこうすれば良いという話だけを聞いてプログラムを組んでも後が続かないように
感じます。

あと、netCDFと言うのはネット上で公開されているクロマトグラフの測定データなんだと
思いますけれど、あまり一般の人が関係するような話ではなさそうなのでnetCDFに関しては
ここで情報を得るのは難しいのではないかと思いますよ。
せめて分析系の機器を扱うような人が集まる場所だと脈も有りそうな気がするんですけれど。
netCDFその物について情報を公開しているようなHPを探した方が良いかもしれません。
英語かもしれませんが、辞書を使ってでも読んでやる位のつもりが無いと情報が薄い分野は
かなり厳しいと思いますよ。

追伸:
netcdfって汎用のデータ格納フォーマットみたいですね。
特にクロマトグラフとかに限らないみたいです。
netcdfで調べると結構引っかかりますね。
そこを糸口にして色々調べてみる事をお勧めします。
運よく詳しい人が見てくれればラッキー位のつもりで
ご自分で調べてみる方を優先した方が良いと思いますよ。
運よくレスが付けば、色々教えてもらえる可能性もあると思いますけれど。

引用返信 編集キー/
■54371 / inTopicNo.3)  Re[2]: netCDFを読み込み,クロマトグラムを表示させる方法
□投稿者/ a04sa013 (2回)-(2010/10/15(Fri) 17:15:20)
No54370 (PATIO さん) に返信
> 2010/10/15(Fri) 13:23:53 編集(投稿者)
>
PATIO様

返信ありがとうございました.
推測通り,学生です.

要するに,焦らずに一歩一歩やったほうが,近道なんですね.
サンプルコードを見てみましたが,なんとか理解できそうです.

もう少し勉強してから,もっと具体的な質問をしようと思います.
ありがとうございました.
解決済み
引用返信 編集キー/
■54378 / inTopicNo.4)  Re[1]: netCDFを読み込み,クロマトグラムを表示させる方法
□投稿者/ れい (964回)-(2010/10/16(Sat) 06:25:53)
No54357 (a04sa013 さん) に返信
> このライブラリの使い方,実際のnetCDFデータの取得方法等を教えていただけますでしょうか?

そのライブラリはunidataのnetCDFライブラリをコンパイルしてできるnetcdf.dllです。
サンプルにはVBでnetcdfファイルを作成する例が書かれているようです。

unidataのnetCDFライブラリを使う場合、
既存のnetCDFファイルからデータを読むだけであれば

1 nc_openでファイルを開く
2 (nc_inq(_xxx)でファイル内の次元名や変数名を取得する)
3 nc_inq_dimid / nc_inq_varid で適切な次元・変数のdimension idとvariable idを取得
4 nc_get_var_xxxで値を取得

の手順でOKです。
次元名や変数名が既知の場合は2の手順は必要はありません。

で、netCDFライブラリをVB.Netから呼ぶ場合にはプラットフォーム呼び出しという技術を使います。
いろいろ面倒ですが、
先ほどのサンプルにある

' nc_open
Declare Ansi Function nc_open Lib "netcdf.dll" _
(ByVal path As String, ByVal mode As Int32, ByRef ncidp As Int32) As Int32

というのがそれを用いる宣言です。
必要なnc_XXXについて、VB.Net中で宣言すれば使えるようになります。
これを宣言すれば1の手順は

r = nc_open( "xxxx.nc", 0, nc_id )

というように書けるようになります。
同様に、

Dim values as Double()
r = nc_inq_varid( nc_id, "peak_height", var_id)
r = nc_get_var_double( nc_id, var_id, values )

というようにして、変数"peak_height"の配列を取得することができます。
(「nc_get_var_double」の宣言はサンプルには無いので自分で考える必要があります。)

unidataのnetCDFライブラリは設計が古いので、かなり使いづらいと思います。
とくにVB.Netから直接netCDF.dllを使うとデザイン上の不整合がいろいろと出てくるかと。

私は使ったことがありませんが、VBAが得意ならOLEがどこかにあったと思いますので、それを使うのもよいかもしれません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -