<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://genome.sph.umich.edu/w/index.php?action=history&amp;feed=atom&amp;title=LiftMap.py</id>
	<title>LiftMap.py - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://genome.sph.umich.edu/w/index.php?action=history&amp;feed=atom&amp;title=LiftMap.py"/>
	<link rel="alternate" type="text/html" href="http://genome.sph.umich.edu/w/index.php?title=LiftMap.py&amp;action=history"/>
	<updated>2026-09-29T18:57:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://genome.sph.umich.edu/w/index.php?title=LiftMap.py&amp;diff=4964&amp;oldid=prev</id>
		<title>Zhanxw at 03:18, 19 June 2012</title>
		<link rel="alternate" type="text/html" href="http://genome.sph.umich.edu/w/index.php?title=LiftMap.py&amp;diff=4964&amp;oldid=prev"/>
		<updated>2012-06-19T03:18:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 23:18, 18 June 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l89&quot;&gt;Line 89:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 89:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     fo = open(fout, &amp;#039;w&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     fo = open(fout, &amp;#039;w&amp;#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for ln in myopen(fin):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     for ln in myopen(fin):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;f = ln.strip().split(&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;\t&lt;/del&gt;&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;f = ln.strip().split(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;fo.write(&#039;\t&#039;.join(f[:6]))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        l = len(f)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;fo.write(&#039;\t&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        f = f[:6] + [ f[i*2] + &lt;/ins&gt;&#039; &#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;+f[i*2 +1] for i in xrange(3, l/2 &lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;if len(f[6:]) != len(flag):&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;fo.write(&#039;\t&#039;.join(f[:6]))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	    &lt;/del&gt;die(&#039;Inconsistent length of ped and map files&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;fo.write(&#039;\t&#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;newMarker = [m for i, m in enumerate(f[6:]) if flag[i]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;if len(f[6:]) != len(flag):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;fo.write(&#039;\t&#039;.join(newMarker))&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;            &lt;/ins&gt;die(&#039;Inconsistent length of ped and map files&#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;fo.write(&#039;\n&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;newMarker = [m for i, m in enumerate(f[6:]) if flag[i]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;#print marker[:10]	&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;fo.write(&#039;\t&#039;.join(newMarker))&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;	&lt;/del&gt;#die(&#039;test&#039;)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;fo.write(&#039;\n&#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;#print marker[:10] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;     &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;        &lt;/ins&gt;#die(&#039;test&#039;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     return True&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;     return True&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Zhanxw</name></author>
	</entry>
	<entry>
		<id>http://genome.sph.umich.edu/w/index.php?title=LiftMap.py&amp;diff=3494&amp;oldid=prev</id>
		<title>Zhanxw: Created page with &#039;&lt;source lang=&quot;python&quot;&gt; #!/usr/bin/python import sys, os  def usage():     print(&quot;%s -m old.map -p old.ped -d old.dat -o new.prefix&quot; % sys.argv[0] )     print(&quot;lift old.map (optio…&#039;</title>
		<link rel="alternate" type="text/html" href="http://genome.sph.umich.edu/w/index.php?title=LiftMap.py&amp;diff=3494&amp;oldid=prev"/>
		<updated>2011-08-10T15:34:27Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt; #!/usr/bin/python import sys, os  def usage():     print(&amp;quot;%s -m old.map -p old.ped -d old.dat -o new.prefix&amp;quot; % sys.argv[0] )     print(&amp;quot;lift old.map (optio…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import sys, os&lt;br /&gt;
&lt;br /&gt;
def usage():&lt;br /&gt;
    print(&amp;quot;%s -m old.map -p old.ped -d old.dat -o new.prefix&amp;quot; % sys.argv[0] )&lt;br /&gt;
    print(&amp;quot;lift old.map (optionally .ped and .dat) to new.prefix.map (.ped/.dat if possible)&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
def die(msg):&lt;br /&gt;
    print msg&lt;br /&gt;
    sys.exit(2)&lt;br /&gt;
    &lt;br /&gt;
def myopen(fn):&lt;br /&gt;
    import gzip&lt;br /&gt;
    try:&lt;br /&gt;
        h = gzip.open(fn)&lt;br /&gt;
        ln = h.read(2) # read arbitrary bytes so check if @param fn is a gzipped file&lt;br /&gt;
    except:&lt;br /&gt;
        # cannot read in gzip format&lt;br /&gt;
        return open(fn)&lt;br /&gt;
    h.close()&lt;br /&gt;
    return gzip.open(fn)&lt;br /&gt;
&lt;br /&gt;
def map2bed(fin, fout):&lt;br /&gt;
    fo = open(fout, &amp;#039;w&amp;#039;)&lt;br /&gt;
    for ln in myopen(fin):&lt;br /&gt;
        chrom, rs, mdist, pos = ln.split()&lt;br /&gt;
	chrom = &amp;#039;chr&amp;#039; + chrom&lt;br /&gt;
        pos = int(pos)&lt;br /&gt;
        fo.write(&amp;#039;%s\t%d\t%d\t%s\n&amp;#039; % (chrom, pos-1, pos, rs))&lt;br /&gt;
    fo.close()&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
# global var:&lt;br /&gt;
LIFTED_SET = set()&lt;br /&gt;
UNLIFTED_SET = set()&lt;br /&gt;
def liftBed(fin, fout, funlifted):&lt;br /&gt;
    params = dict()&lt;br /&gt;
    params[&amp;#039;LIFTOVER_BIN&amp;#039;] = &amp;#039;/net/wonderland/home/zhanxw/mycode/liftOver/liftOver&amp;#039;&lt;br /&gt;
    params[&amp;#039;OLD&amp;#039;] = fin&lt;br /&gt;
    params[&amp;#039;CHAIN&amp;#039;] = &amp;#039;/home/zhanxw/mycode/liftOver/hg18ToHg19.over.chain.gz&amp;#039;&lt;br /&gt;
    params[&amp;#039;NEW&amp;#039;] = fout&lt;br /&gt;
    params[&amp;#039;UNLIFTED&amp;#039;] = fout + &amp;#039;.unlifted&amp;#039;&lt;br /&gt;
    from string import Template&lt;br /&gt;
    cmd = Template(&amp;#039;$LIFTOVER_BIN $OLD $CHAIN $NEW $UNLIFTED&amp;#039;)&lt;br /&gt;
    cmd = cmd.substitute(params)&lt;br /&gt;
    os.system(cmd)&lt;br /&gt;
    #record lifted/unliftd rs&lt;br /&gt;
    for ln in myopen(params[&amp;#039;UNLIFTED&amp;#039;]):&lt;br /&gt;
	if len(ln) == 0 or ln[0] == &amp;#039;#&amp;#039;:continue&lt;br /&gt;
	UNLIFTED_SET.add(ln.strip().split()[-1])&lt;br /&gt;
    for ln in myopen(params[&amp;#039;NEW&amp;#039;]):&lt;br /&gt;
	if len(ln) == 0 or ln[0] == &amp;#039;#&amp;#039;:continue&lt;br /&gt;
	LIFTED_SET.add(ln.strip().split()[-1])&lt;br /&gt;
    &lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def bed2map(fin, fout):&lt;br /&gt;
    fo = open(fout, &amp;#039;w&amp;#039;)&lt;br /&gt;
    for ln in myopen(fin):&lt;br /&gt;
	chrom, pos0, pos1, rs = ln.split()&lt;br /&gt;
	chrom = chrom.replace(&amp;#039;chr&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
	fo.write(&amp;#039;%s\t%s\t0.0\t%s\n&amp;#039; % (chrom, rs, pos1))&lt;br /&gt;
    fo.close()&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def liftDat(fin, fout):&lt;br /&gt;
    fo = open(fout, &amp;#039;w&amp;#039;)&lt;br /&gt;
    for ln in myopen(fin):&lt;br /&gt;
	if len(ln) == 0 or ln[0] != &amp;#039;M&amp;#039;:&lt;br /&gt;
	    fo.write(ln)&lt;br /&gt;
	else:&lt;br /&gt;
	    t, rs = ln.strip().split()&lt;br /&gt;
	    if rs in LIFTED_SET:&lt;br /&gt;
		fo.write(ln)&lt;br /&gt;
    fo.close()&lt;br /&gt;
    return True&lt;br /&gt;
    &lt;br /&gt;
def liftPed(fin, fout, fOldMap):&lt;br /&gt;
    # two ways to do it:&lt;br /&gt;
    # 1. write unlifted snp list&lt;br /&gt;
    #    use PLINK to do this job using --exclude&lt;br /&gt;
    # 2. alternatively, we can write our own method&lt;br /&gt;
    # we will use method 2&lt;br /&gt;
    marker = [i.strip().split()[1] for i in open(fOldMap)]&lt;br /&gt;
    flag = map(lambda x: x not in UNLIFTED_SET, marker)&lt;br /&gt;
    # print marker[:10]&lt;br /&gt;
    # print flag[:10]&lt;br /&gt;
    fo = open(fout, &amp;#039;w&amp;#039;)&lt;br /&gt;
    for ln in myopen(fin):&lt;br /&gt;
	f = ln.strip().split(&amp;#039;\t&amp;#039;)&lt;br /&gt;
	fo.write(&amp;#039;\t&amp;#039;.join(f[:6]))&lt;br /&gt;
	fo.write(&amp;#039;\t&amp;#039;)&lt;br /&gt;
	if len(f[6:]) != len(flag):&lt;br /&gt;
	    die(&amp;#039;Inconsistent length of ped and map files&amp;#039;)&lt;br /&gt;
	newMarker = [m for i, m in enumerate(f[6:]) if flag[i]]&lt;br /&gt;
	fo.write(&amp;#039;\t&amp;#039;.join(newMarker))&lt;br /&gt;
	fo.write(&amp;#039;\n&amp;#039;)&lt;br /&gt;
	#print marker[:10]	&lt;br /&gt;
	#die(&amp;#039;test&amp;#039;)&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
def makesure(result, succ_msg, fail_msg = &amp;quot;ERROR&amp;quot;):&lt;br /&gt;
    if result:&lt;br /&gt;
        print &amp;#039;SUCC: &amp;#039;, succ_msg&lt;br /&gt;
    else:&lt;br /&gt;
        print &amp;#039;FAIL: &amp;#039;, fail_msg&lt;br /&gt;
        sys.exit(2)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    import argparse&lt;br /&gt;
    parser = argparse.ArgumentParser(description=&amp;#039;&amp;#039;)&lt;br /&gt;
    parser.add_argument(&amp;#039;-m&amp;#039;, dest=&amp;#039;mapFile&amp;#039;, required = True)&lt;br /&gt;
    parser.add_argument(&amp;#039;-p&amp;#039;, dest=&amp;#039;pedFile&amp;#039;)&lt;br /&gt;
    parser.add_argument(&amp;#039;-d&amp;#039;, dest=&amp;#039;datFile&amp;#039;)&lt;br /&gt;
    parser.add_argument(&amp;#039;-o&amp;#039;, dest=&amp;#039;prefix&amp;#039;, required = True)&lt;br /&gt;
    args = parser.parse_args()&lt;br /&gt;
    &lt;br /&gt;
    oldBed = args.mapFile + &amp;#039;.bed&amp;#039;&lt;br /&gt;
    makesure(map2bed(args.mapFile, oldBed),&lt;br /&gt;
             &amp;#039;map-&amp;gt;bed succ&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    newBed = args.prefix + &amp;#039;.bed&amp;#039;&lt;br /&gt;
    unlifted = args.prefix + &amp;#039;.unlifted&amp;#039;&lt;br /&gt;
    makesure(liftBed(oldBed, newBed, unlifted),&lt;br /&gt;
             &amp;#039;liftBed succ&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    newMap = args.prefix + &amp;#039;.map&amp;#039;&lt;br /&gt;
    makesure(bed2map(newBed, newMap),&lt;br /&gt;
	     &amp;#039;bed-&amp;gt;map succ&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    if args.datFile:&lt;br /&gt;
	newDat = args.prefix + &amp;#039;.dat&amp;#039;&lt;br /&gt;
	makesure(liftDat(args.datFile, newDat),&lt;br /&gt;
		 &amp;#039;liftDat succ&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    if args.pedFile:&lt;br /&gt;
	newPed = args.prefix + &amp;#039;.ped&amp;#039;&lt;br /&gt;
	makesure(liftPed(args.pedFile, newPed, args.mapFile),&lt;br /&gt;
		 &amp;#039;liftPed succ&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zhanxw</name></author>
	</entry>
</feed>