Category Archives: Genetics

Are genes becoming more important with increasing age?

I found an apparent paradox between two studies. John Whitfield did a twin study in Australia and concluded that shared environmental effects decreased with age (from about 50% to 10%) while additive genetic effects increased. The new Sardinian study found higher heritabilities among younger individuals and explained that by an increase of environmental insults with age. Nice said, but who is right?

WordPress as CMS

I have read many useful (and also some less useful) comments how to squeeze WordPress to work as a CMS.

I did not want to make any major changes to scripts that would be lost after an upgrade. I did not want to have extra plugins to change home (for example by creating an overriding home.cfm). I did not want to have any new categories. I did not want to change permalink structure. I still need my directory plugin to work, I still need the blog (some redirects even loose the blog address!) and I wanted to keep the RSS feed.

After several hours I came up with an very simple solution: Take a standard page and rename its title and slug to “Home” – assign a special “Home” template – redirect htaccess to this page. The only trick is to make the “Home” template work: it is basically a copy of the index.cfm in your WordPress theme directory where the line calling loop.php is being replaced with a slightly modifed loop code.

myblog.php

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
28:
<?php
/*
Template Name:MyBlog
*/
?>

<?php get_header(); ?>
<?php get_sidebar
(); ?>

<div id="primary">
<?php query_posts('showposts=5'); ?>
<?php 
while(have_posts()) : the_post(); if(!($first_post == $post->ID)) : ?>
    <div class="entry">
        <div class="post-meta">
            <h2 class="post-title" id="post-<?php the_ID(); ?>"><?php if(!is_single()) { ?><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a><?php } else { the_title(); } ?></h2>
            <p class="post-metadata"><?php the_time('l, F jS'?><?php if(!get_option('tarski_hide_categories')) { ?> in <?php the_category(', '); ?><?php ?><?php /* If there is more than one author, show author's name */ $count_users $wpdb->get_var("SELECT COUNT(*) FROM $wpdb->usermeta WHERE `meta_key` = '" $table_prefix "user_level' AND `meta_value` > 1"); if ($count_users 1) { ?> by <?php the_author_posts_link(); } ?> | <?php comments_popup_link('No comments''1 comment''% comments''''Comments closed'); ?><?php edit_post_link('Edit',' (',')'); ?></p>
        </div>
        <div class="post-content">
            <?php the_content(' more &raquo;&raquo;&raquo;'); ?>
            <p class="tagdata"><?php _e('Tags: '); UTW_ShowTagsForCurrentPost("commalist"?> | <?php _e('Trackback: '); ?>
            <a href="<?php the_permalink() ?>trackback/">link</a></p>
        </div>
    </div>
<?php endif; endwhile; ?>
</div>

<?php get_footer(); ?>

HUGO Changing Offensive Gene Names

Hsien Hsien Lei has a good comment on gene names approved by Human Genome Organisation (HUGO) Gene Nomenclature Committee which are nevertheless offending . Some of the inappropriate names are LFNG – lunatic fringe homolog (Drosophila), MFNG manic fringe homolog (Drosophila) as well as SHH sonic hedgehog homolog (Drosophila). There are many more names that arise only from a particular culture (like death executioner Bcl-2); it seems also a particular kind of humour to call a deaf mouse Beethoven. Yea, yea.

How to set up a proxy in 1 minute

There are many ways to do this – for example by reconfiguring your Apache installation. The fastest procedure, however, is to download DeleGate for your platform and create this batch file

rundelegate.cmd

1:
2:
4:
@echo off
dg9_2_5.exe -P80 SERVER=http -vd -f ADMIN=your@email.de AUTHORIZER="-list{anyuser:anypassword}"
pause

Why we should believe professional cyclists

I renember a nice meeting in South Sardinia in 2002 (see my figure below) where a lot of famous people gathered for interesting talks in a wonderful surrounding.
A spin off from this Ogliastra Genetics Park – as the authors called it – is now a paper in PLOS Genetics that examines the heritability of 98 quantitative cardiovascular traits in 6,148 Sardinians.
Although the authors did not measure hematocrit, RBC related counts had an extremely high heritability (MCV 0.76, MCH 0.78). Hemoglobin was somewhat lower (0.47) which might in part be attributable due to some local selection factors. This result comes largely unexpected, as the high heritability of the MCV was not known so far.
In the absence of any assay for exogeneous EPO, hematocrit is used as an indirect parameter for testing athletes. I already wondered why cyclists are having such high values (if we exclude illegal drug use). This seems to be a genetically trait by self-selection – an anemic cyclist will not participate in the Tour de France. Yea, yea.

123-2325_img.JPG

Addendum

Here is an answer to the question what makes a champion ;-)

On the “Self”

If I would ever find the time, I would write a book on the “self”. Inspired by the Eccles/Popper book that I bought as a student, I always wondered how different the self is being defined in sociology, psychology/psychiatry, philosophy and theology.
As my current focus is more on genetics and immunology, I found a paper by Francisco Borrego on the “missing self” quite interesting as it highlights the genetic self is determined mainly by MHC class I molecules, where only NK cells transfected with H-2Dd were able to confer resistance for being self-attacked. It would be nice if other disciplines could also provide such simple answers, yea, yea.

Addendum

I have another suggestion: Zfp608 protects mouse mothers against immune-mediated attack by fetal cells.

Is there also a “digiself“?

Our identity has, for many years, existed quite independent of our physical incarnation in government, financial and other institutional databases. We are not real to the bank or other authorities unless we can produce something that links our physical self to our “real identity” in their database. We have many versions of this digital identity – or digiSelf, as I like to call it – spread among many databases, each with its unique characteristics, and inferred behaviours. Each one is more real to the institution – and ironically, to the people in that institution – than our physical self, what we consider to be our real self.

A simple POP answering machine

A script that I used for many years…

popreply.cfm

  1:
  2:
  3:
  4:
  5:
  6:
  7:
  8:
  9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
127:
<!--
CF_POPREPLY 1.02
Cold Fusion 3.0 POP mail answering machine
(c) 1 Dec 97 by Matthias Wjst (wjst@gsf.de)
bugfixes in 1.01 by 15 Jan 98
 * time stamp of sender may wrong, therefore only absolute time checking
 * reading blacklist now in loop
 * added to blacklist listproc
 * better email recognition
-->

<CFIF #ParameterExists(Attributes.LastInterval)#
  AND #ParameterExists(Attributes.LastUnit)#
  AND #ParameterExists(Attributes.PopServer)#
  AND #ParameterExists(Attributes.PopUser)#
  AND #ParameterExists(Attributes.PopUserPassword)#
  AND #ParameterExists(Attributes.WorkingDir)#
  AND #ParameterExists(Attributes.Replytext)#>

    <CFIF #Attributes.LastUnit# is "Day">
        <CFSET #unit#="D">
    <CFELSEIF #Attributes.LastUnit# is "Hour">
        <CFSET #unit#="H">
    <CFELSEIF #Attributes.LastUnit# is "Minute">
        <CFSET #unit#="N">
    <CFELSEIF #Attributes.LastUnit# is "Second">
        <CFSET #unit#="N">
    <CFELSE>
        error: correct time interval needed
    <CFABORT>
    </CFIF>
<CFELSE>
error: more parameters needed
<CFABORT>
</CFIF>

<CFFILE Action="WRITE"
File="#Attributes.WorkingDir#popreply.txt"
OUTPUT="#Attributes.Replytext#">

<CFIF #FileExists("#Attributes.WorkingDir#popreply.cmd")#>
    <CFFILE Action="DELETE"    File="#Attributes.WorkingDir#popreply.cmd">
</CFIF>

<CFPOP SERVER=#Attributes.PopServer#
    USERNAME=#Attributes.PopUser#
    PASSWORD=#Attributes.PopUserPassword#
    ACTION=GETALL
    NAME="Sample">

<CFIF #ParameterExists(ACT_MAILS)#>

    <CFLOOP QUERY="Sample">

        <CFX_POP3DATE DateMail=#Sample.date#>

        <CFIF #DateDiff(unit,DateMail,Now())# lt #(int(Attributes.LastInterval)#>

            <CFIF #FindNoCase("gateway",Sample.from,1)# is "0"
              AND #FindNoCase("dispatch",Sample.from,1)# is "0"
              AND #FindNoCase("prts",Sample.from,1)# is "0"
              AND #FindNoCase("notesys",Sample.from,1)# is "0"
              AND #FindNoCase("netlib",Sample.from,1)# is "0"
              AND #FindNoCase("MAILER-DAEMON",Sample.from,1)# is "0"
              AND #FindNoCase("root",Sample.from,1)# is "0"
              AND #FindNoCase("0000-Admin",Sample.from,1)# is "0"
              AND #FindNoCase("digi-info",Sample.from,1)# is "0"
              AND #FindNoCase("digi-request",Sample.from,1)# is "0"
              AND #FindNoCase("ftp-list",Sample.from,1)# is "0"
              AND #FindNoCase("ftp-mail",Sample.from,1)# is "0"
              AND #FindNoCase("ftpadmin",Sample.from,1)# is "0"
              AND #FindNoCase("ip-addr",Sample.from,1)# is "0"
              AND #FindNoCase("ip-oper",Sample.from,1)# is "0"
              AND #FindNoCase("listproc",Sample.from,1)# is "0"
              AND #FindNoCase("listserv",Sample.from,1)# is "0"
              AND #FindNoCase("mail-server",Sample.from,1)# is "0"
              AND #FindNoCase("daemon",Sample.from,1)# is "0"
              AND #FindNoCase("mirror",Sample.from,1)# is "0"
              AND #FindNoCase("netserv",Sample.from,1)# is "0"
              AND #FindNoCase("responder",Sample.from,1)# is "0"
              AND #FindNoCase("win-ip-admins",Sample.from,1)# is "0"
              AND #FindNoCase("mirror",Sample.from,1)# is "0">

                <CFSET Start = REFind("[-a-zA-Z0-9\._]+@([-a-zA-Z0-9_]+\.)+([a-zA-Z]{2,3})", from, 1)>
                <CFIF Start eq "0">
                    <CFSET Start = "1">
                </CFIF>
                <CFSET Stop = REFind("[^-a-zA-Z0-9@_\.]", from, Start)>
                <CFIF #Stop# is not "0">
                    <CFLOOP CONDITION="REFind('[A-Za-z]', Mid(from, Stop, 1)) GT 0">
                        <CFSET Stop = Stop - 1>
                    </CFLOOP>
                    <CFSET email= Mid(from, Start, Stop - Start)>
                <CFELSE>
                    <CFSET email= mid(from, Start, len(from))>
                </CFIF>

                <CFIF #FileExists("#Attributes.WorkingDir#popreply.black")#>
                    <CFFILE Action="READ"
                    File="#Attributes.WorkingDir#popreply.black"
                    Variable="blacklist">
                <CFELSE>
                    <CFSET #blacklist#="">
                </CFIF>

                <CFIF #FindNoCase(email,blacklist,1)# is "0">

                    <CFFILE Action="APPEND"
                    File="#Attributes.WorkingDir#popreply.black"
                    OUTPUT="#email#">

                    <CFFILE Action="APPEND"
                    File="#Attributes.WorkingDir#popreply.log"
                    OUTPUT="blat popreply.txt -t #email# -s #chr(34)#Re: #left(Sample.subject,19)##chr(34)#">
                </CFIF>

            </CFIF>
    
        </CFIF>
    </CFLOOP>

    <CFIF #FileExists("#Attributes.WorkingDir#popreply.cmd")#>
        <CFX_SHELLEXEC FILE="popreply.cmd" DIRECTORY="#Attributes.WorkingDir#">
    </CFIF>

</CFIF>

Don´t leave orphan links

Tim Berner Lee argued in his article “Cool URLs don´t change” to set always a server redirect if you have moved a page.
The frequently seen page reload using the header tags <META HTTP-EQUIV=REFRESH CONTENT="0;URL=http://new.server.de/tips_tricks/">
is only suboptimal as spider will not follow them. Put instead one of the following lines in your your Apache con/http.conf or into the .htaccess file of your directory.

.htaccess

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
87:
Redirect permanent /windows/HTML/page.html http://linux.de/apple/page.html

# or use this more variable code
# RewriteEngine On
# RewriteCond %{HTTP_HOST} ^www.domain.de$ [NC]
# RewriteRule ^(.*)$  http://www.domain2.de/$ [R=301,L]

# Bot block found at http://www.javascriptkit.com/howto/htaccess13.shtml 
RewriteEngine On 
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR] 
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR] 
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR] 
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR] 
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR] 
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR] 
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR] 
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR] 
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR] 
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR] 
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR] 
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR] 
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR] 
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR] 
RewriteCond %{HTTP_USER_AGENT} ^Zeus 
RewriteRule ^.* - [F,L]


Preventing bots from increasing your server load is another suggestion.

A low-cost system for a PDF literature archiv II

With Google Desktop you will have the archiving capabilities that would have cost 10,000$ only a few years ago. Things become more tricky if want to share your archive on a workgroup level. Here is an idea that I have found in the German Laborjournal

  1. Shut down your firewall
  2. Install the freeware DNKA available from dnka.com. It will act as a web server by interacting as a layer between Google Desktop Search and the user
  3. use http://127.0.0.1:4664 to configure your webserver and offer http://yourIP to your working group.

dnka.png
Need more information? Check geekzone and a nice indexer interface at TweakGDS.

Snapshot of your working directory

We need two open source programs: Gzip is a compression utility with a high compression rate and free from patented algorithms. GnuPG is a complete and free encryption solution to protect confidential communication and digitally stored information. Create a /backup directory in each of your working directories.

backup.cmd

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:
15:
16:
18:
@echo off

rem where the zip file resides
set p=d:\programme\system\

rem where GnuPG resides
set g=c:\Programme\GnuPG\

rem compress files
set z=%date:~6,4%%date:~3,2%%date:~0,2%.zip
%p%zip %cd%\backup\%z% %cd%\*.*

rem sign backup
%g%gpg -b -armor %cd%\backup\%z%

pause
exit


Write the above code in a file, put it somewhere in your path and assign an icon (I am running this from the buttonbar of TotalCommander (R)). One click – and your current directory is being saved as zip file and signed with your key.

Convert an Access(R) database into mySQL format

That should be a pretty straightforward task: Open in Access(R) the export function, select ODBC and send the tables to your local MySQL installation. This fails, however, on my system without any useful error message.

Access2MySQL(R) of DMSoft(R) does the job, costs 55$. The trial version stops after transfering 10 datasets; nevertheless the newly created database allows an hazzle-free phpMyAdmin import of .csv exported data.

mysqlrev.png

A database driven epidemiological questionnaire

During a past project I moved from a paper-based questionnaire directly to a database version. This has the advantage of generating at the same time an online version (with some interface scripts) and an offline version (by using a serial paper printing).

The whole package is written in standard HTML with some Cold Fusion(R) extension (where you need the Railo(R) or Blue Dragon(R) interpreter too).

Download (md5:1922125540), create a datasource “aerzte” and attached the included Access(R) database. Then run the following script in your browser.

frage.cfm

  1:
  2:
  3:
  4:
  5:
  6:
  7:
  8:
  9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 40:
 41:
 42:
 43:
 44:
 45:
 46:
 47:
 48:
 49:
 50:
 51:
 52:
 53:
 54:
 55:
 56:
 57:
 58:
 59:
 60:
 61:
 62:
 63:
 64:
 65:
 66:
 67:
 68:
 69:
 70:
 71:
 72:
 73:
 74:
 75:
 76:
 77:
 78:
 79:
 80:
 81:
 82:
 83:
 84:
 85:
 86:
 87:
 88:
 89:
 90:
 91:
 92:
 93:
 94:
 95:
 96:
 97:
 98:
 99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
195:
<CFINCLUDE TEMPLATE="top.cfm">

<CFSET #cookie_id#=3>

<CFSET #group#=1>
<CFIF #ParameterExists(URL.page)#>
    <CFIF #IsNumeric(URL.page)#>
        <CFSET #group#=#URL.page#>
    </CFIF>
<CFELSE>
    <CFABORT>
</CFIF>

<CFOUTPUT>
<div id="subnav">
<h3 class="selected">=#cookie_id#</h3>
<ul>
    <li <CFIF #group# is 1>class=selected</CFIF>>
<a href=frage.cfm?page=1>Block 1</a></li>
    <li <CFIF #group# is 2>class=selected</CFIF>>
<a href=frage.cfm?page=2>Block 2</a></li>
    <li <CFIF #group# is 3>class=selected</CFIF>>
<a href=frage.cfm?page=3>Block 3</a></li>
</ul>
</div>
</CFOUTPUT>

<!--- ------------------------------------------ --->

<div id="content" class="afternav">

<CFQUERY NAME="Get" DATASOURCE="aerzte">
SELECT qry.*
FROM qry
WHERE qry.group=#group# AND qry.active=1
ORDER BY qry.id ASC;
</CFQUERY>

<CFQUERY NAME="Already" DATASOURCE="aerzte">
SELECT qry_answer.*
FROM qry_answer
WHERE qry_answer.partcp_id=#cookie_id# AND qry_answer.active=1;
</CFQUERY>

<CFSET #error#="">
<CFSET #blacklist#= "#chr(59)#,#chr(34)#,#chr(39)#,%22,--">

<CFOUTPUT QUERY="Get">
    <CFIF #PARAMETEREXISTS(fieldnames)#>
        <CFIF #ReFindNoCase(qryvar,fieldnames)# is not 0>
            <CFSET #sc#=#Evaluate("FORM.#qryvar#")#>
            <CFLOOP index="i" list="#blacklist#">
                <CFIF #Find(i,sc)# is not 0>
                    <CFSET #msg# = "not allowed">
                    <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
                </CFIF>
            </CFLOOP>
            <CFIF #sc# is "" AND #qryvar# is not "terminator">
                <CFSET #msg# = "missing">
                <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
            </CFIF>
            <CFIF #Find("int",qrytype)# is not 0 AND NOT #Isnumeric(sc)#>
                <CFSET #msg# = "not numeric">
                <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
            </CFIF>
            <CFIF #Find("varchar",qrytype)# is not 0 AND NOT #IsSimpleValue(sc)#>
                <CFSET #msg# = "not character">
                <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
            </CFIF>
            <CFIF #Find("datetime",qrytype)# is not 0 AND NOT #IsDate(sc)#>
                <CFSET #msg# = "not a date">
                <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
            </CFIF>
            <CFIF #GetToken(valid,1,":")# is "range">
                <CFIF #sc# lt #GetToken(valid,2,":")# OR #sc# gt #GetToken(valid,3,":")#>
                    <CFSET #msg# = "out of range ">
                    <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
                </CFIF>
            </CFIF>
        <CFELSE>
            <CFSET #msg#="missing">
            <CFSET #error# = #error# & "|" & #qryvar# & ":" & #msg#>
        </CFIF>
    </CFIF>
</CFOUTPUT>

<!--- ------------------------------------------ --->

<CFIF #error# is not "" OR NOT #PARAMETEREXISTS(fieldnames)#>

    <CFOUTPUT>
    <FORM method=POST action="frage.cfm?page=#URL.page#">
    
    Block #group#<BR>
    </CFOUTPUT>
    
    <table width=400 border=0 bgcolor="lightyellow">
    
    <CFOUTPUT QUERY="Get">
    <tr><td colspan=3><hr size=1></td></tr>
    <tr>
    <td width=200>#text#</td>
    <td width=200 align=right <CFIF ListContains(error,qryvar,"|") gt 0>bgcolor=orange</CFIF>>
    
    <CFSET #ar#=""> 
    <CFIF #ListFind(ValueList(Already.qry_id),id)# gt 0>
        <CFSET #ar#=#ListGetAt(ValueList(Already.response),ListFind(ValueList(Already.qry_id),id))#>
    </CFIF>

    <CFIF #PARAMETEREXISTS(fieldnames)#>
        <CFIF #ReFindNoCase(qryvar,fieldnames)# is not 0>
            <CFSET #ar#=#Evaluate("FORM.#qryvar#")#>
        </CFIF>
    </CFIF>
    <CFIF #www# is "radio">
        <CFLOOP INDEX="i" LIST="#response#" DELIMITERS=":">
            <CFSET #s#="">
            <CFIF #i# is #ar#>
                <CFSET #s#="checked">
            </CFIF>
            <input type="radio" #s# name="#qryvar#" value="#i#">#i# 
        </CFLOOP>
    <CFELSEIF #www# is "select">
        <select name=#qryvar# size=3 multiple>
        <CFLOOP INDEX="i" LIST="#response#" DELIMITERS=":">
            <CFSET #s#="">
            <CFIF #i# is #ar#>
                <CFSET #s#="selected">
            </CFIF>
            <option #s# value="#i#">#i#</option>
        </CFLOOP>
        </select>
    <CFELSEIF #www# is "checkbox">
        <CFLOOP INDEX="i" LIST="#response#" DELIMITERS=":">
            <CFSET #s#="">
            <CFIF #i# is #ar#>
                <CFSET #s#="checked">
            </CFIF>
            <input type="checkbox" #s# name=#qryvar# value=#i#>#i# 
        </CFLOOP>
    <CFELSEIF #www# is "text">
        <INPUT type=text NAME=#qryvar# VALUE="#ar#" align=right>
    <CFELSEIF #www# is "textarea">
        <textarea name=#qryvar# rows=1 wrap="soft">#ar#</textarea>
    <CFELSEIF #www# is "password">
        <INPUT TYPE=password NAME=#qryvar# VALUE="">
    <CFELSEIF #www# is "hidden">
        <INPUT TYPE=hidden NAME=#qryvar# VALUE="hidden">
    </CFIF>
    <CFIF ListContains(error,qryvar,"|") gt 0>
        <BR>#GetToken(GetToken(error,ListContains(error,qryvar,"|"),"|"),2,":")#
    </CFIF>
    </td>
    
    </tr>
    
    </CFOUTPUT>
    
    <tr>
    <td colspan=2 align=right><input type=submit value="weiter &gt;&gt;&gt;"</td>
    </tr>
    
    </table>
    </FORM>

<CFELSE>

    <CFTRANSACTION>
    <CFIF #ListLen(ValueList(Already.qry_id))# gt 0>
        <CFQUERY NAME="Save" DATASOURCE="aerzte">
            UPDATE qry_answer
            SET qry_answer.active=0
            WHERE qry_answer.qry_id IN (#ReReplaceNoCase(ValueList(Get.id),",{1,20}",",","ALL")#) AND qry_answer.partcp_id=#cookie_id#;
        </CFQUERY>
    </CFIF>

    <CFOUTPUT QUERY="Get">
        <CFQUERY NAME="Save" DATASOURCE="aerzte">
            INSERT INTO qry_answer (qry_id,partcp_id,response,active,date_entry)
            VALUES (#id#,#cookie_id#,'#Evaluate("FORM.#qryvar#")#',1,'#ACTIME#');
        </CFQUERY>
    </CFOUTPUT>
    </CFTRANSACTION>

    <CFIF #PARAMETEREXISTS(fieldnames)#>
        <CFIF #ReFindNoCase("terminator",fieldnames)# is not 0>
            done
        <CFELSE>
            <CFLOCATION URL="frage.cfm?page=#int(group+1)#">
        </CFIF>
    </CFIF>
</CFIF>
    
<CFINCLUDE TEMPLATE="bottom.cfm">

Convert external maps to OziExplorer

Many map software vendors like German TOP 50 do not include export functions. Printing, however, is usually not a problem.

I therefore suggest to use the print function for exporting map data. Just print your desired map area into a PDF file (TOP 50 nicely allows to set anchor points for that).

A PDF printer driver will be already installed on many systems (if not, please go to sourceforge and download pdfcreator). Write down the upper left and lower right GPS coordinates of your rectangle as you will need them later in OziExplorer.

You will need to download also two graphics packages: netpbm and xpdf.

Move your PDF print export and all downloaded executables into one directory. After running the following script you will see a bmp file that can be imported and calibrated in OziExplorer. Happy navigating!

ozi.cmd

 1:
 2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
27:
@echo off & setlocal enableDelayedExpansion

rem our working directory
set p=c:\Programme\OziExplorer\
rem our pdf with the map
set d=print.pdf
set w=ping 127.0.0.1 -n 2 -w 1000

:1
rem we extract the figures from the PDF
pdfimages %p%%d% %p%%d%

:2
rem we rename the first and concatenate all further pictures
rem note: the ping is only used to slow down the batch ;-) 
rename %d%-000.ppm block
for %%a in (%p%*.ppm) do %w%>nul & pnmcat -tb %%a block >tmp & %w%>nul & copy tmp block>nul & echo %%a done

:3
rem finally we create a bmp file and clear the space
ppmtobmp %p%block >%p%%d%.bmp
del *.ppm>NUL

:ende
pause
exit

Is religion a natural phenomenon?

I do not want to discuss the rather polemic view of Daniel Dennetts “Breaking the spell” or promote other books of the new secularism. The Guardian digital edition writes on 29th Oct 2006

Secularism is suddenly hip, at least in the publishing world. A glut of popular science books making a trenchant case against religion have soared up the bestseller lists both here and in America. The phenomenon represents a backlash against a perceived rise in religious fundamentalism and recent crazes for ‘spirituality’ by way of books such as The Da Vinci Code. Secularists are now eager to show that the empiricism of science can debunk the claims of believers.

More interesting is the question if human morality is an inborn trait or not. Nicholas Wade has a nice essay in the NYT:

Marc D. Hauser, a Harvard biologist, has built on this idea to propose that people are born with a moral grammar wired into their neural circuits by evolution. In a new book, “Moral Minds” (HarperCollins 2006), he argues that the grammar generates instant moral judgments which, in part because of the quick decisions that must be made in life-or-death situations, are inaccessible to the conscious mind. People are generally unaware of this process because the mind is adept at coming up with plausible rationalizations for why it arrived at a decision generated subconsciously. Dr. Hauser presents his argument as a hypothesis to be proved, not as an established fact. But it is an idea that he roots in solid ground, including his own and others’ work with primates and in empirical results derived by moral philosophers.

I renember also an article by Roger Higfield in the Washington Times (24th March 2003) than unfortunately vanished from the internet:

Scientists are hunting for a “God gene” that underpins our ability to believe. The idea of genes linked with beliefs does not look far-fetched, given the influence of genetics on the developeing brain.

Higfield is refering to an empirical twin study:

To investigate the heritability of religiousness and possible age changes in this estimate, both current and retrospective religiousness were assessed by self-report in a sample of adult male twins (169 MZ pairs and 104 DZ pairs, mean age of 33 years). Retrospective reports of religiousness showed little correlation difference between MZ (r=.69) and DZ (r=.59) twins. Reports of current religiousness, however, did show larger MZ (r=.62) than DZ (r=.42) similarity. Biometric analysis of the two religiousness ratings revealed that genetic factors were significantly weaker (12% vs. 44%) and shared environmental factors were significantly stronger (56% vs. 18%) in adolescence compared to adulthood. Analysis of internal and external religiousness subscales of the total score revealed similar results. These findings support the hypothesis that the heritability of religiousness increases from adolescence to adulthood.

Time on Oct 17, 2004 referred to a book of Dean Hamer “The God Gene”

Chief of gene structure at the National Cancer Institute, Hamer not only claims that human spirituality is an adaptive trait, but he also says he has located one of the genes responsible, a gene that just happens to also code for production of the neurotransmitters that regulate our moods. Our most profound feelings of spirituality, according to a literal reading of Hamer’s work, may be due to little more than an occasional shot of intoxicating brain chemicals governed by our DNA. “I’m a believer that every thought we think and every feeling we feel is the result of activity in the brain,” Hamer says.

This looks very much like a completely physical view of spiritual affairs (Hamer became famous for his failure of the “gay gene” before abandoning science).

So we may better turn to the question if there is any theological background? I renember a famous guest lecture in Marburg 1980 about the Epistle to the Romans by Herbert Braun (Braun is a Bultmann scholar. Ernst Fuchs was in Marburg too; together with Ernst Käsemann and Günther Bornkamm they are all famous scholars of Rudolf Bultmann. Käsemann and Fuchs both wrote a “Commentary on Romans”).

Fuchs highlighted Rom 2:14 in King James translation saying:

13 For not the hearers of the law are just before God, but the doers of the law shall be justified.
14 For when the Gentiles, which have not the law, do by nature the things contained in the law, these, having not the law, are a law unto themselves:
15 Which shew the work of the law written in their hearts, their conscience also bearing witness, and their thoughts the mean while accusing or else excusing one another;

Science and theology are not far away here. Maybe it is even common sense that most humans have an inherited deep feeling of religiousness.

Genetic code and God’s language -cont’d-

There is a new book by Francis Collins “The language of God“, one of the leading persons in human genome sequencing. As the commentary says:
Continue reading Genetic code and God’s language -cont’d-