今日の畑(100710)

ゴーヤは順調。他の畑では垣根みたいになってるとこがある。一面里芋だらけとか、さつまいもオンリーの畑とかあって、今年の家庭菜園は他の畑も見ていて楽しい。ただサツマイモみたいなツル性の作物って隣の畑を侵食するから家庭菜園では禁止されているとこ多いって聞いたことあるけどどうなんだろう?あとで貸主に聞いてみよう。

1278762319 1278762331

韓国唐辛子と茄子。韓国唐辛子はなかなか赤くならんね。

1278762313 1278762325

ミョウガは期待度大。オクラも順調。

1278762337 1278762343

トマトは実りすぎてて、近所に配っても消費できてない。大きいのも赤くなってきた。

1278762349 1278762355

あと、インゲンの収穫が終わって処分したのだけど、収穫タイミングが遅れて硬くなってて不味いのが多かった気がする。去年の方が美味かった。育てるのは蔓なしが楽だけど収穫のこと考えるとつるありのほうがいいかもしれんね。

Rでfoldlとfoldr

Rにおける高階関数はCommon Higher-Order Functions in Functional Programming Languagesにあるように一通りそろっている

Reduce uses a binary function to successively combine the elements of a given vector and a possibly given initial value. Filter extracts the elements of a vector for which a predicate (logical) function gives true. Find and Position give the first or last such element and its position in the vector, respectively. Map applies a function to the corresponding elements of given vectors. Negate creates the negation of a given function.

foldl,foldrも簡単

foldl <- function(f,x,i){Reduce(f,x,i)}
foldr <- function(f,x,i){Reduce(f,x,i,right=TRUE)}

実行してみる

> foldl("-",list(1,2,3),1) # ((1-1)-2)-3
[1] -5
> foldr("-",list(1,2,3),1) # 1-(2-(3-1))
[1] 1

あとRの高階関数は大文字で始める規則にでもなってんのかな?

ProductName Rの基礎とプログラミング技法
U.リゲス
シュプリンガー・ジャパン(株) / ¥ 3,675 ()
通常1~4週間以内に発送

文献とか特許のマイニング

昨日のワークショップでは、面白い話が聞けてよかった。いくつかアイデアが浮かんだのでメモっておく。特に二次会の他愛のない話はブレスト的でよかった。

文献中の画像から分類

どういう解析をしたらいいかわからないとか、どういうグラフとかプロットが好まれるのかわからないという話があって、解析結果を含む(当該ソフトウェア名を含むとかで絞るのか?)論文を集めてきて、pdfから画像を抜き出し、プロット、チャートを画像類似検索とか組み合わせて、検索できるサイトがあれば便利なんじゃなかろうか?

R Graphical Manualの論文版みたいな感じ。

Patentと文献を自動的に解析

製薬企業が文献を出すのは、色々制約があって(故に制約企業)。たいていはプロジェクトがポシャったとき(またはゴールしたとき)と相場が決まっているので、patent中の実施例化合物名を会社名と紐付けて収集しておいてデータベース化しておいて、論文が出たらそっちのデータベースと照会するっていうのはどうかなと。パテントは結構そのプロジェクトのトーンがわかるでしょう(例えば実施例がやたらと多いパテントとかやっつけ仕事か?とか)。あと論文とかも学位対策か?とかもauthorと特許の出願者照らし合わせながらみればわかったりしませんかね。BMCLとか、「実験記録じゃねーのこれは?」というのが結構多くて、なんでこんなもん投稿すんのかなぁとか思ったりして背景が知りたかったりするのですよね。学位対策度87%とか出てくればdiscussionのとこだけ読んでたいしたことなければ読み飛ばして終了とかできるのでありがたかったりする。

というように、文献検索系のマイニングをビジネスというか組織ハックとか業界ハック的な側面から考えていくと色々面白そうなこともやれるよなぁと。

ProductName Rによるテキストマイニング入門
石田 基広
森北出版 / ¥ 2,940 ()
在庫あり。

プログラミングHaskell 8章

関数型パーサー。復習を兼ねてもう一度

ProductName プログラミングHaskell
Graham Hutton
オーム社 / ¥ 2,940 ()
在庫あり。

import Data.Char
type Parser a = String -> [(a,String)]


myreturn :: a -> Parser a
myreturn v = \inp ->[(v,inp)]

myfailure :: Parser a
myfailure = \inp -> []

item :: Parser Char
item = \inp -> case inp of
                 [] -> []
                 (x:xs) -> [(x,xs)] 

parse :: Parser a -> String -> [(a, String)]
parse p inp = p inp

(>>==) :: Parser a -> (a -> Parser b) -> Parser b
p >>== f = \inp -> case parse p inp of
                     [] -> []
                     [(v,out)] -> parse (f v) out

--p :: Parser (Char, Char)
--p = item >>== \v -> (item >>== \w -> (item >>== \z -> myreturn (v,z)))

(+++) :: Parser a -> Parser a -> Parser a
p +++ q = \inp -> case parse p inp of
                    [] -> parse q inp
                    [(v, out)] -> [(v, out)]

sat :: (Char -> Bool) -> Parser Char
sat p = item >>== \x -> if p x then myreturn x else myfailure

digit :: Parser Char
digit = sat isDigit

lower :: Parser Char
lower = sat isLower

upper :: Parser Char
upper = sat isUpper

letter :: Parser Char
letter = sat isAlpha

alphanum :: Parser Char
alphanum = sat isAlphaNum

char :: Char -> Parser Char
char x = sat (==x)

string :: String -> Parser String
string [] = myreturn []
string (x:xs) = char x >>== \x -> string xs >>== \xs -> myreturn (x:xs)

many :: Parser a -> Parser [a]
many p = many1 p +++ myreturn []
many1 :: Parser a -> Parser [a]
many1 p = p >>== \v -> many p >>== \vs -> myreturn (v:vs)

ident :: Parser String
ident = lower >>== \x -> (many alphanum >>== \xs -> myreturn (x:xs))

nat :: Parser Int
nat = many1 digit >>== \xs -> myreturn (read xs)

space :: Parser ()
space = many (sat isSpace) >>== \_ -> myreturn ()

token :: Parser a -> Parser a
token p = space >>== \_ -> p >>== \v -> space >>== \_ -> myreturn v

identifier :: Parser String
identifier = token ident

natural :: Parser Int
natural = token nat

symbol :: String -> Parser String
symbol xs = token (string xs)

--p :: Parser [Int]
--p = symbol "[" >>== \_ -> natural >>== \n -> many (symbol "," >>== \_ ->
--    natural) >>== \ns -> symbol "]" >>== \_ -> myreturn (n:ns)


expr :: Parser Int
expr = term >>== \t -> ((symbol "+" >>== \_ -> expr >>== \e -> myreturn (t + e)) +++ myreturn t)

term :: Parser Int
term = factor >>== \f -> ((symbol "*" >>== \_ -> term >>== \t -> myreturn (f * t)) +++ myreturn f)

factor :: Parser Int
factor = (symbol "(" >>== \_ -> expr >>== \e -> symbol ")" >>== \_ -> myreturn e) +++ natural

eval :: String -> Int
eval xs = case parse expr xs of
            [(n,[])]  -> n
            [(_,out)] -> error ("unused input " ++ out)
            []        -> error "invalid input"

Hospitality - Drum & Bass 2010

最強によいですな。

Hospitality - Drum & Bass 2010

定番のアーティストは安定感があるとして、echo inadaとかわらさを超えてぶりまでイキそうな勢い。

RのNAMESPACEファイル

Rでパッケージ作るときにパッケージ変数として扱いたいものを

pit_dir <- file.path(Sys.getenv("HOME"),".pit")
pit_config <- file.path(pit_dir,"pit.yaml")
pit_profile_file <- NULL

と先頭に書いておきたいのだけどNAMESPACEファイルを作成すると

> library(pit)
 要求されたパッケージ yaml をロード中です 
> pit.switch("test")
 以下にエラー pit.switch("test") : 
   'pit_profile_file' に対するロックされたバインディングの値は変更できません 

とでる。ちなみにpit.switchはこれ

pit.switch <- function(name=NULL){
  if(is.null(name)) name <- "default"
  pit_profile_file <<- file.path(pit_dir, paste(name, ".yaml", sep=""))
  config <- pit.config()
  ret <- config$profile
  config$profile <- name
  write(as.yaml(config),pit_config)
  if(name != ret) write(paste("Profile switch to",name,"from",ret), stderr())
  return(ret)
}

環境をとってきてunlockBindingすればいいんだろうなぁと思うんだけどやり方が分からなくて、

pit_dir <- file.path(Sys.getenv("HOME"),".pit")
pit_config <- file.path(pit_dir,"pit.yaml")
#pit_profile_file <- NULL
assign("pit_profile_file",NULL,pos =".GlobalEnv")

とやって、直接大域環境に変数をセットしてるんだけど、これって本当はどうするのがいいんだろうか?

ProductName Rの基礎とプログラミング技法
U.リゲス
シュプリンガー・ジャパン(株) / ¥ 3,675 ()
通常1~4週間以内に発送


追記10.07.08

環境オブジェクトを作るという方法もあるそうなので、こっちでやってみた。

pit_dir <- file.path(Sys.getenv("HOME"),".pit")
pit_config <- file.path(pit_dir,"pit.yaml")
conf<-new.env()
conf$pit_profile_file <- NULL

こっちのほうが精神衛生上よろしいかも。それにしてもRの環境ってなんだろか?Lispみたいな感じで考えとけばいいのかな?あとでソースコードを探ってみよう。

参考

大規模サービス技術入門

帰ったら届いてた。

明日の新幹線の中で、本読むか、コード書くか悩む。

ProductName デザインイノベーション デザイン戦略の次の一手
ハルトムット・エスリンガー
翔泳社 / ¥ 2,310 ()
在庫あり。

これを読む時間も欲しい。

Clinical Pharmacokinetics and Pharmacodynamics: Concepts and Applications

SECTION Iの基本は読んだ。結構速いペースで基本が流されてるので、一から優しく教える入門書という位置づけではなさそう。あと、今までPKがあってPDがあって結びつけてPK-PDって感覚が強かったけど、この本ではまず全体としてのPK-PDがあって、その後2つのフェーズとして分けてる感じか。

  • input-exposure(pharmacokinetics)
  • exposure-response(pharmacodynamics)

PKPD

カラーなので読みやすいのだけど、やたらと重い。あと章末に問題が載っていて、問題載せておいて解答は存在しない仕様か?と思ったらAppendix Jに答えが載っているという親切設計。独学でもこまらないですね。

ProductName Clinical Pharmacokinetics and Pharmacodynamics: Concepts and Applications
Malcolm Rowland,Thomas N Tozer
Lippincott Williams & Wilkins / ¥ 5,977 ()
在庫あり。

Section IIからの内容は

  1. Single Doseでの暴露とレスポンス
  2. 投与量に関して
  3. 個体差をどう評価していくか
  4. 補完
  5. Appendices

となっている。Appendicesの内容も結構面白そう。

おまけ(dot)

digraph sample {
    graph [rankdir = LR];
    node [shape = box]
    "Dosage\nRegimen" [style = filled, color = "#336666", fillcolor = "#CC9999"]
    "Exposure to Drug\nwithin Body" [style = filled, color = "#336666", fillcolor = "#CC9999"]
    "Desired and\nAdverse Effects" [style = filled, color = "#336666", fillcolor = "#CC9999"]
    "Dosage\nRegimen"                                       -> "Exposure to Drug\nwithin Body" [label = "Pharmacokinetics"];
    "Exposure to Drug\nwithin Body"                         -> "Desired and\nAdverse Effects" [label = "Pharmacodynamics"];
    "Desired and\nAdverse Effects"                          -> "Exposure to Drug\nwithin Body" [style = dotted];
    "Exposure to Drug\nwithin Body"                         ->"Dosage\nRegimen"  [style = dotted];
}

澤姫

実家から送られてきた。金賞受賞酒とか箱がいいと美味そうに見えてしまうのかな? 右側のは確かに美味しかったけど、左のはピリピリ感がしてイマイチ好きになれなかった。

結局、自分で買ったものでないのと酒好きでない人から送られたものは保管状態わからんからなぁ。

1278327204 1278327197

酒は嗜好品だから難しいし、それ以前に、そもそもたいしてお酒を飲まない人から贈られた酒が美味しくなかった場合、好みじゃなかったのか保管状態が悪かったのかわからないから、酒屋の情報も一緒につけて欲しいなぁと思った。

あと大吟じゃなくていいよなぁとか。

「夫婦で年収600万円をめざす! 二人で時代を生き抜くお金管理術」を読んだ

夫婦で読めばいいかなと思って買ってみた。

ProductName 夫婦で年収600万円をめざす! 二人で時代を生き抜くお金管理術
花輪 陽子
ディスカヴァー・トゥエンティワン / ¥ 1,365 ()
在庫あり。

  • 妊娠を期に退職すると出産一回につき200万円相当の手当分を損する
  • これからの時代は、二人でどれだけの収入を稼ぐかより、なにに動やってお金を使うかの方が重要
  • クレジットカードで支払いをすると平均23%出費が多いから、現金払いに変えることで23%節約できる
    • これはちょっと違うと思う。統計マジック的なニオイがする
  • 嗜好品を減らす
    • お酒は無理
  • 夫の小遣いが月三万円では出世しない
    • 何に使うかじゃないのかね。