Monday, August 24, 2009

Biomarkers for Cancer: What have been for biomakers?

1. Jones HB (1848) On a new substance occuring in the urine with mollities ossium. Phil Trans R Soc Lond 138: 55–62
1848, light chain of immunoglobulin in the urine, identified in 75% of patients with myeloma;

1960s
2. Abelev GI et al. (1963) Production of embryonal alpha-globulin by transplantable mouse hepatomas.
Transplantation 1: 174–180
alfa-fetoprotein

3. Gold P and Freedman SO (1965) Specific carcinoembryonic antigens of the human digestive system. J Exp Med 122: 467–481
carcinoembryonic antigen (CEA)

1980s
4. Bast RC Jr et al. (1981) Reactivity of a monoclonal antibody with human ovarian carcinoma. J Clin Invest 68: 1331–1337
carbohydrate antigen (CA) 125 for ovarian epithelial cancer.

5. Papsidero LD et al. (1980) A prostate antigen in sera of prostatic cancer patients. Cancer Res 40: 2428–2432
prostate-specific antigen (PSA [KLK3]) for prostate cancer

6. Diamandis EP et al. (2002) Tumor Markers: Physiology, Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
Alfa-fetoprotein Germ-cell hepatoma 1963
- Diagnosis
- Differential diagnosis of NSGCT (nonseminomatous germ cell tumor)
- Staging
- Detecting recurrence
- Monitoring therapy

7.
Melvin KE et al. (1971) Early diagnosis of medullary carcinoma of the thyroid gland by means of calcitonin assay. N Engl J Med 285: 1115–1120
Sturgeon C (2002) Practice guidelines for tumor marker use in the clinic. Clin Chem 48: 1151–1159

Calcitonin Medullary thyroid carcinoma
- Diagnosis
- Monitoring therapy

8.
Bast RC Jr et al. (1981) Reactivity of a monoclonal antibody with human ovarian carcinoma. J Clin Invest 68: 1331–1337
Diamandis EP et al. (2002) Tumor Markers: Physiology,Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
CA125 Ovarian 1981
- Prognosis
- Detecting recurrence
- Monitoring therapy

9.
Bast RC Jr et al. (2001) 2000 update of recommendations for the use of tumor markers in breast and colorectal cancer: clinical practice guidelines of the American Society of Clinical Oncology. J Clin Oncol 19: 1865–1878
Kufe D et al. (1984) Differential reactivity of a novel monoclonal antibody (DF3) with human malignant versus benign breast tumors. Hybridoma 3: 223–232
Hilkens J et al. (1984) Monoclonal antibodies against human milk-fat globule membranes detecting differentiation antigens of the mammary gland and its tumors. Int J Cancer 34: 197–206
CA 15-3 Breast
1984–5
- Monitoring therapy

10.
Koprowski H et al. (1979) Colorectal carcinoma antigens detected by hybridoma antibodies. Somatic Cell Genet 5: 957–971
Ludwig JA and Weinstein JN (2005) Biomarkers in cancer staging, prognosis and treatment selection. Nat Rev Cancer 5: 845–856
CA 19-9 Pancreatic 1979
- Monitoring therapy

11.
Ludwig JA and Weinstein JN (2005) Biomarkers in cancer staging, prognosis and treatment selection. Nat Rev Cancer 5: 845–856
Bast RC Jr et al. (2001) 2000 update of recommendations for the use of tumor markers in breast and colorectal cancer: clinical practice guidelines of the American Society of Clinical Oncology. J Clin Oncol 19: 1865–1878
Diamandis EP et al. (2002) Tumor Markers: Physiology, Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
Carcinoembryonic antigen Colon 1965
- Monitoring therapy
- Prognosis
- Detecting recurrence
- Screening for hepatic metastases

12.
Bast RC Jr et al. (2001) 2000 update of recommendations for the use of tumor markers in breast and colorectal cancer: clinical practice guidelines of the American Society of Clinical Oncology. J Clin Oncol 19: 1865–1878
McGuire WL et al. (1977) Current status of estrogen and progesterone receptors in breast cancer. Cancer 39:2934–2947
ER (estrogen receptor) and PgR (progesterone receptor) Breast
1970s
- Select patients for endocrine therapy

13.
Bast RC Jr et al. (2001) 2000 update of recommendations for the use of tumor markers in breast and colorectal
cancer: clinical practice guidelines of the American Society of Clinical Oncology. J Clin Oncol 19: 1865–1878
Coussens L et al. (1985) Tyrosine kinase receptor with extensive homology to EGF receptor shares chromosomal location with neu oncogene. Science 230: 1132–1139
Yamamoto T et al. (1986) Similarity of protein encoded by the human c-erb-B-2 gene to epidermal growth factor receptor. Nature 319: 230–234
HER2 Breast1985–6
- Select patients for trastuzumab therapy

14.
Bagshawe KD et al. (1980) Markers in gynaecological cancer. Arch Gynecol 229: 303–310
Diamandis EP et al. (2002) Tumor Markers: Physiology, Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
Human chorionic gonadotropin-β Testicular 1938
- Diagnosis
- Staging
- Detecting recurrence
- Monitoring therapy

15.
Diamandis EP et al. (2002) Tumor Markers: Physiology, Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
Hill BR and Levi C (1954) Elevation of a serum component in neoplastic disease. Cancer Res 14: 513–515
Lactate dehydrogenase Germ cell 195491
- Diagnosis
- Prognosis
- Detecting recurrence
- Monitoring therapy

16.
Diamandis EP et al. (2002) Tumor Markers: Physiology, Pathobiology, Technology, and Clinical Applications. Washington, DC: AACC Press
Wang MC et al. (1979) Purification of a human prostate specific antigen. Invest Urol 17: 159–163
Prostate-specific antigen Prostate 197992
- Screening (with DRE (digital rectal examination) )
- Diagnosis (with DRE)

17.
Carayanniotis G and Rao VP (1977) Searching for pathogenic epitopes in thyroglobulin: parameters and caveats. Immunol Today 18: 83–88
Sturgeon C (2002) Practice guidelines for tumor marker use in the clinic. Clin Chem 48: 1151–1159
Thyroglobulin Thyroid 195693
- Monitoring

Biomarkers for Cancer: What can be biomarkers?

1. Vathany Kulasingam and Eleftherios P Diamandis, Nature Clinical Practice Oncology, 2008, 5(10), 588-599.

- DNA
- mRNA (messenger RNA)
- proteins
- metabolites
- processes
(such as apoptosis, angiogenesis or proliferation)

Biomarkers for Cancer: What is Biomarker?

1. Vathany Kulasingam and Eleftherios P Diamandis, Nature Clinical Practice Oncology, 2008, 5(10), 588-599.
diagnostic (screening) biomarker
A marker that is used to detect and identify a given type of cancer in an individual. These markers are expected to have high specificity and sensitivity; for example, the presence of Bence–Jones protein in urine remains one of the strongest diagnostic indicators of multiple myeloma.

Prognostic biomarker
This type of marker is used once the disease status has been established. These biomarkers are expected to predict the probable course of the disease including its recurrence, and they therefore have an important influence on the
aggressiveness of therapy. For example, in testicular teratoma, human chorionic gonadotropin and alfa-fetoprotein levels can discriminate two groups with different survival rates.

stratification (predictive) biomarker
This type of marker serves to predict the response to a drug before treatment is started. This marker classifies individuals as likely responders or nonresponders to a particular treatment. These biomarkers mainly arise from array-type experiments that make it possible to predict clinical outcome from the molecular characteristics of a patient’s tumor.

Biomarkers for Cancer : Facts on Cancer

In this post and the following ones, I will summary the facts about what I learned about biomarkers, particularly cancer biomarkers.

1.. Jemal A et al. (2007) Cancer statistics, 2007. CA Cancer J Clin 57: 43–66
Cancer continues to be a major cause of morbidity and mortality among men and women. In the US in 2006, over 1.4 million new cases of cancer were diagnosed and over half a million people died from this disease; the disease accounts for approximately 25% of all deaths in the US each year.

Getting Married ~

I am going to get married soon with the girl that I mentioned in a previous post in the past May. We planned to register on Sept. 10th, Chinese Teacher's Day, since both us are teachers. She is in-charge for the begging, primary school education, and I am for the concluding, college education. The wedding ceremony was planned on the 30th this January (Lunar calendar, Layue Shiliu, Dec. 16th).
Thank God for letting us meet, know each other and join together. Although the future life will be definitely not always smooth, we see our lives will be tied forever.

Tuesday, July 21, 2009

Develop a Cheminformatics Platform with Mathematica

My first encounter with Mathematica happened more than 12 years ago. Since 2001, I have intensively used it as a tool in my research work. Till now, i virtually use it on a daily basis for many different tasks. I don't think I have every aspects of the tool, but I do think my understanding of Mathematica is beneficial to researchers who are interested in learning Mathematica. I feel the necessity to organize my previous codes into a tutorial for two reasons. The first is that there are no good if any books available on market on the application in the cheminformatics or bioinformatics, particularly for those intermediate users who have known the basics of Mathematica but want to sharpen their tools. The other reason is that I have the motive to clean up my codes and thoughts for the development of my research. This tutorial is intended to show the essentials of Mathematica through the anatomy of projects from design to implementation. I see many users (and some tutorials books as well) writing codes in the style of C, Fortran or other programming languages for which they have been familiar with. To me, a good programming style is extremely important to master the language, in terms of development time, efficiency and terseness. A rule of thumb is that the development process helps you to organize your thoughts and to let you understand the problems at a deeper level, instead of making you feel cumbersome and work as a laborer. On the surface, we could think Mathematica as an advanced dialect of Lisp. "Advanced" here means millions of built-in functions and packaged as the extension of the kernel delivered with the language.
My plan is to include the following chapters.
Chapter 1. Introduction
Chapter 2. Compounds collection database
Chapter 3. Graph theory representation of molecules and its applications
Chapter 4. Descriptor development, similarity comparison, and virtual screening
Chapter 5. CIF parser, molecular structural operations and interface to quantum mechanics calculation
Chapter 6. Spectra processing (including both Image and Graph)
Chapter 7. Schroedinger equation solutions
Appendices
Subject Index

Saturday, May 02, 2009

Labor Day Trip to Ya'an

Mengding Mt - Wide view
On this labor's day break, I took a trip to Ya'an with some colleagues and graduate students. The traffic was very extremely heavy and we were struck on the ramp to the highway for more than two hours. Around 1 pm, we finally reached our first destination, Mengdingshan Mt. The mountain is not very high only about 1450 m in altitude but famous for tea production. The lunch included several local specialities cooked with fresh tea buds. Before waiting for the lunch, the students spent time in tea picking and of course mainly posed for photo-taking. The local tea farmer provided the free tea-making services for the visitors.
As viewed from the mountain, Ya'an area is hilly, scenic and covered by heavy clouds. The area is also known for plenty of rain and it is one of three Ya's, Ya rain, Ya fish and Ya women. Walking in the mountain, the temperature was cool but the air was fresh and it felt very comfortable. Besides tea, there is a statue of the Great Yu who was respected by Chinese for his contribution in water-control and a museum of the Red Army. The mountain was a historical battle between the red army and the Sichuan army led by Liu Xiang during the long march. Of course, like most famous mountains in China, there are temples which have turned into money-sucker in either decent or deceive ways. In front of a temple, there are dozens of ginkgo trees which was said more than 2000 yrs old. Their leaves are smaller than the common ones but the trees are tall and beautiful. They stand still there year after year, and witness the men and women passing by.

Superbig Tea Kettle
Since the mountain is famous for its tea, a super-big man-made was built at the entrance of the mountain.


Landlords
In a tea field, two tiny figurines were found along the road. I guess they are landlord grandpa and grandpa. People are weak in mind and they need to materialize their hopes and worship what can see physically.

Sunday, April 12, 2009

Dancing with Words

from Kyoto Journal, interview with Red Pine (Bill Porter).

His accounts on the levels in translating Chinese poems and buddism suntras are vivid and touching.

“When I was translating Cold Mountain, I definitely didn’t have my own voice,” he says. “With Stonehouse it was somewhere in between. I think I didn’t really discover my translation voice until I did Bodhidharma, which gave me a chance to find the rhythms of my language.

“Every project I’ve engaged in taught me an entirely different way of translation,” he says. I don’t view Chinese poetry today the way I did then. I use to count the words in my English lines and try to do my best to do the same thing they did in Chinese. I was also intrigued about things you can do in English that reflect the Chinese, not to make the English sound Chinese but to do things with it that to me at least seemed unique.

“I tried to do things that I saw happening in Chinese — the Chinese language is a very telegraphic, terse language — time is almost irrelevant, their subject is also dispensed with. A line can be very ambiguous. So I started to play with that in English and still make sense.

“Words carry a lot on their surface, but a lot is under the surface that we don’t see when we see the word — a lot comes from contextual familiarity.

People identify words with context. I was intrigued by the nature of Chinese poetry and its brevity — there were these flashes of meaning.

“What I do now is more of a performance,” he says. “Before, I was usually sort of reading the lines like an actor, but now I perform the book — what I do now is closer to dance. The words have to follow along my physical feel for the rhythm, the feeling of what’s happening in the Chinese poem. I don’t see the Chinese as the origin anymore. The Chinese was what the authors used to write down what they were feeling.
“I’ve gotten so used to the words I don’t have to think about them anymore. I’m more concerned with the spirit. I don’t think I have a philosophy of translation, but you have to be very open.

“You’re trying to get into the heart of another person. I’m fortunate I’ve found materials that present deep hearts. That’s the way I’ve responded with the passion I have. I’m fortunate to have run into the Buddha, Bodidharma, Cold Mountain, Stonehouse and the other Buddhist poets.”

Saturday, March 21, 2009

Love Hurts



Love hurts, love scars,
Love wounds, and marks,
Any heart, not tough,
Or strong, enough
To take a lot of pain,
Take a lot of pain
Love is like a cloud
Holds a lot of rain
Love hurts, ooh ooh love hurts

I'm young, I know,
But even so
I know a thing, or two
I learned, from you
I really learned a lot,
Really learned a lot
Love is like a flame
It burns you when its hot
Love hurts, ooh ooh love hurts

Some fools think of happiness
Blissfulness, togetherness
Some fools fool themselves I guess
They're not foolin me

I know it isn't true,
I know it isn't true
Love is just a lie,
Made to make you blue
Love hurts, ooh,ooh love hurts
Ooh,ooh love hurts

[guitar solo]

I know it isn't true,
I know it isn't true
Love is just a lie,
Made to make you blue
Love hurts, ooh ooh love hurts
Ooh ooh love hurts
Ooh ooh...

Thursday, February 05, 2009

Keggin Isomers

This post introduced my understanding of Keggin structure. Keggin structure, also called Baker-Figgis-Keggin structure, is a well known structrual scalfold for heteropoly acids and other inorganic compounds. Below is extracted from the structure [AlO4Al12(OH)24(H2O)12]7+ (often called as Al13) determined by the X-ray crystallograph.

Al13, &epsilon Keggin Structure


α Isomer, Td

α Isomer, Wireframe Model



&epsilon Isomer, Td

&epsilon Isomer, Wireframe Model



&beta Isomer, C3v


&gramma Isomer, C2v


&delta Isomer, C3v

Wednesday, February 04, 2009

Building a Cheminfomatics System in M7

In the past two weeks, I need to build an in-house compounds collection database. Well, there are many open and commercials ones available on Internet. However, they do not serve my needs. Then I decide that I might be able to build one of my own. I have no previous experience in database building. So I started out by thinking if I can use Mathematica or Lisp to build a database of its own without relying on the third-party engines. Later I realized the enomorus work that will require.
After searching the documentation of Mathematica 7, I found it provides an easy-to-use interface for many database systems, such as MySQL and Oracle. Although the mathematica version of SQL functions is quite limited and you cannot use those functions as free as normal functions (they have to be able to converted to SQL grammar), you could always use SQLExecute[] to write any SQL sentences. The interface function takes care of data types conversion. I then chose the open source MySQL as my database engine.
Mathematica 7 introduced new Import capabilities for SDF and SMILES files besides its support for MOL2 and PDB. It also provides a closed source database called ChemicalData. At the beginning, I thought these functionality may save me a lot of time since most of my data sources are available in either SDF or SMILES format. After trying out several big commercial catalogs, I abandoned this idea. Real life files are not 100% in conform with the file format standards, but filled with all sorts of odds. Import function fails at so many situations that I have to write many wrap-up codes for taking care of errors. Then I started wring my own parser codes and the job was much simpler than I thought. The SDF format is quite old and its definition is in the FORTRAN style.
Although mathematica is not much helpful in parsing the input files, it is a good choice for work-flow coding, pre- and post-processing of data items. Cheminformatics toolkits need time to write, but the interface to external programs of Mathematica offers a convenient pipe to employ the third-party toolkits, such as openbabel, oechem, jchem, etc.
After debugging many obvious and less obvious errors, the system is finally running smoothly. On my 2-core lenovo laptop with 2GB memory, the single-process code loads about 800,000 compounds (1.8GB on hard disk) including the redundancy check and proprieties calculation in 12 hours. And the average CPU loading is about 1.5. And the time cost per entry seems not increasing as the database increases its size dramatically.

Monday, January 26, 2009

Pfizer buys Wyeth

2008 saw many "impossible" things happened. Super big Wall Street banks went brankrupt and Obama won the presidency of the United States. Well, in the new year of 2009, Pfizer wants to buy Wyeth for $68 billion and it would become the largest merger case if it is completed as planned.
News report from New York Times is linked as below.
http://www.nytimes.com/2009/01/26/business/26drug.html?_r=1&hp

Thursday, January 15, 2009

SMILES Parser

SMILES and Mathematica normal expression are essentially the same. Both are a presentation of a graph by breaking cycles into labeled trees. It is straightforward to parse a SMILES string into an expression so that further operations can be easily applied in Mathematica functions.
With the aid of string patterns (i.e. regular expression), recursive programing and the ability to convert a string into an expression (i.e. macro expansion), an expandable parser is not hard to write.
First, there are two kinds of information encoded in SMILES: atomic and structural information. Atomic information includes atom symbol, type, bonds, isotope weight, charge, valence, etc. Structural information includes atom order, the cyclic labeling, branches, etc. Configuration around double bonds, chirality are structural information from a chemist's viewpoint. However, they are not graphic properties in the sense of topology and can only be encoded into some predefined conventions, such as the orders of atoms. If we need independent representation form of them, we can encode such information as 3D coordinates of atoms along other information. Atomic information is very limited in SMILES and can be thought as known knowledge or can be obtained with other means. For the sake of simplicity, we may neglect it now.
We divide the parsing job into two parts, static definition of atom dictionary and all sorts of string patterns and scan function of a SMILES string.

Atom Dictionary

smiElements:= {
{"C", 4},
{"H",1},
{"N", 3,5},
{"O",2},
{"S",2,4,6},
{"B",3},
{"F",1},
{"Cl",1},
{"Br",1},
{"I",1}
};
smiElementsAromatic:={"c","n","o","p","s","as","se"};


String Patterns

(* Need to be refined. *)
smiAtomDefault := (#[[1]] & /@ smiElements);
smiChargePatttern := (("-" | "+") ..) | (("-" | "+") ~~ DigitCharacter ...);
smiChiralPattern := ("@" ..) | ("@" ~~ DigitCharacter) | ("@" ~~ LetterCharacter ~~ LetterCharacter ~~ DigitCharacter);
smiAtomCustom := "[" ~~ DigitCharacter ... ~~ smiAtomDefault ~~
smiChiralPattern ... ~~ ("H" ~~ DigitCharacter ...) ... ~~
smiChargePatttern ... ~~ "]";
smiAtomPattern := smiAtomCustom | smiAtomDefault;
smiAtomAromatic := smiElementsAromatic | ( "[" ~~ DigitCharacter ... ~~ smiElementsAromatic ~~ smiChiralPattern ... ~~ ("H" ~~ DigitCharacter ...) ... ~~smiChargePatttern ... ~~ "]");
smiBondPattern := "-" | "=" | "#" | ":" | "/" | "\\" | ".";
smiBranchBra := "(";
smiBranchKet := ")";
smiBranchEither = smiBranchBra | smiBranchKet;
smiCyclicLabel := (DigitCharacter ~~ ("%" ~~ DigitCharacter ~~ DigitCharacter) ...) | (DigitCharacter ~~ DigitCharacter ~~ ("%" ~~ DigitCharacter ~~ DigitCharacter) ...)
smiAtomAny := ("" | smiBondPattern) ~~ (smiAtomPattern | smiAtomAromatic) ~~ ("" |smiCyclicLabel);


When scanning a SMILES string, we break it into basic nodes as defined in the pattern of smiAtomAny, then different cases are handled accordingly. There are three situations in general: an atomic node, an atomic node with breaking labels and a branching node.

Parse Smiles

smiParseSmiles[s_String, type_: "String"] :=
Module[{smiParseAtom, smiParse,smiGetLabelIndex, smiParseCyclicLabelMeta},

smiGetLabelIndex[i_String] := Module[{pos, temp}, ...];
smiParseCyclicLabelMeta[bond_String, y_String] := Module[{z, zz, zzz}, ...];
smiParseAtom[ss_String] /; StringMatchQ[ss, smiAtomAny] :=StringReplace[...];
smiParseAtom[ss_String] /; StringMatchQ[ss, smiBranchBra] := (...);
smiParseAtom[ss_String] /; StringMatchQ[ss, smiBranchKet] := (...);
smiParse[ss_String] := Block[{$RecursionLimit = Infinity},StringReplace[ss, ...];

StringReplace[s,
StartOfString ~~ a : (smiAtomPattern | smiAtomAromatic) ~~
c : ("" | smiCyclicLabel) ~~ rest___ ~~ EndOfString :>
"Molecule[\"" ~~ a ~~ "\"" ~~
If[StringQ[c] && StringLength[c] > 0,
smiParseCyclicLabelMeta[
If[StringMatchQ[a, smiAtomAromatic], ",Aromatic",
",Single["], c], ""] ~~
If[StringQ[rest] && StringLength[rest] > 0, smiParse[rest]] ~~
"]"]
];


Cycling labeled are re-organized with an unique number from the natural number sequence. Cycle breakage labeling and branching handling uses a similar mechanism: a stack-like (either in the form of a data structure or a function) data structure is used to store intermediate results. As an open symbol is met, a new item is built. When a closure symbol is met, the stored intermedate is handled and pop up one item from the stack. Otherwise, we push the item into the stack. To avoid using global variables which is convenient in recursive coding, we define the sub-functions inside smiParseSmiles.

The function was tested on the 150 smiles strings in the OpenBabel package. Total time of 30 seconds was costed on my laptop. Below is an example SMILES string and the parsed result.

Example SMILES

OC(=O)C1=C(C=CC=C1)C2=C3C=CC(=O)C(=C3OC4=C2C=CC(=C4Br)O)Br


Normal Expression Represenation

Molecule["O",
Single["C", Double["O"],
Single["C", Single[R[1]],
Double["C",
Single["C", Double["C", Single["C", Double["C", Double[R[1]]]]]],
Single["C", Single[R[2]],
Double["C", Double[R[3]],
Single["C",
Double["C",
Single["C", Double["O"],
Single["C",
Double["C", Double[R[3]],
Single["O",
Single["C", Single[R[4]],
Double["C", Double[R[2]],
Single["C",
Double["C",
Single["C", Double["C", Double[R[4]], Single["Br"]],
Single["O"]]]]]]]], Single["Br"]]]]]]]]]]]

Thursday, January 08, 2009

Represenation of Molecules

There are many ways to represent molecules in computerized world, such as connection table, z-matrix, cartesian lists, SMILES, INCHI, SDF, MOL2, PDF, etc. Various kinds of formats serve for different purpose. For the most use in cheminformatics area, the format should be efficent and compact in terms of size, import and export, all sorts of operations. For the internal usage, the human readability is not so important. A molecule can be naturally viewed as a labeled graph. Robert B. Nachbar proposed a hierarchical data structure (a tree) for genetic programming in his molecular evolution studies. Like in SMILES format, rings are broken to turn a cyclic graph to a tree and the broken bonds are labeled with a label. He called such format Normal Expression represenation. In Mathematica, a sample presenation is as follows. This view is not only natural but also efficient in parsing though it seems clumszy at the first sight.

Ball-Stick Model


Mathematica Normal Expression


Tree Structure


Although the molecular evolution has been continued by researchers at the Unveristy of Leiden (they even set up a company for selling their software product), the represenation format has been abondoned. Instead, they adopt the so-called TreeSMILES format which is nearly identical with SMILES. Since LISP was used in their implementation. I don't see the reason why abondon such format. Actually, in Lisp, the format merits on another advantage: the closure scoping and compiling on-fly make it possible to present a molecule in a compiled function. For such an implementation, not only is the efficiency is high, but also the coding is terse (the molecular represenation function also serves as accessor and other related functions).

Wednesday, January 07, 2009

Reader on Screen


The Reader is a novel about the relationship between a teenager boy and a Nazi policewoman during WWII. I first read it four (or eight?) years ago. As I remembered, I could not keep on reading it through once I started. The work has all characteristics of a masterpiece, a touching angle about a big historical event, the conflict between humanity and justice, desire and sex, etc. Just an unforgetable reading experience as the author unfolding his story with the heroine, Hanna.

The same title on today's New York Times caught my attention. By clicking into the link, I was eager to find if this movie is based on the novel that I read. The running title, "How far would you go to protect a secret?", does not ensure me, but as I read the story summary, all the feelings got freshen-up.

The movie, starred by Kate Winslet and Ralph Fiennese, has won several gold globe nominations. I am eager to see it, however, not sure if I should hold much expecation on the movie.