From 532d45803dc4ca800a5bbaeb0697c9984adecdba Mon Sep 17 00:00:00 2001 From: Lucas Sinclair Date: Sun, 26 Aug 2012 17:07:18 +0200 Subject: [PATCH] Update my fork of the package --- INFO.url | 2 +- README.md | 3 +- doc/conf.py | 9 ++-- doc/content/bugs.rst | 2 +- doc/content/installation.rst | 18 ++----- doc/content/licensing.rst | 2 +- doc/templates/bbcflinks.html | 5 -- samples/build.py | 2 +- setup.py | 8 +-- track/__init__.py | 6 ++- track/genomes.db | Bin 59392 -> 0 bytes track/genomes.py | 99 ----------------------------------- track/serialize/__init__.py | 2 +- 13 files changed, 23 insertions(+), 135 deletions(-) delete mode 100755 doc/templates/bbcflinks.html delete mode 100644 track/genomes.db delete mode 100644 track/genomes.py diff --git a/INFO.url b/INFO.url index b871a31..e2eeda1 100644 --- a/INFO.url +++ b/INFO.url @@ -1 +1 @@ -URL=http://bbcf.epfl.ch/track +http://xapple.github.com/track/ diff --git a/README.md b/README.md index 6d77be8..9c5d4ca 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ track 1.1.0 =========== Copyright 2011 EPFL BBCF +Written by track is a python module for reading and writing genomic data. @@ -14,4 +15,4 @@ of this license is in the LICENSE.txt file. Full documentation ================== -The full documentation can be found [on our website](http://bbcf.epfl.ch/track). +The full documentation can be found [on the website](http://xapple.github.com/track/). \ No newline at end of file diff --git a/doc/conf.py b/doc/conf.py index 3ec70ea..405c96a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -22,7 +22,7 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinxcontrib.googleanalytics'] +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode'] # Add any paths that contain templates here, relative to this directory. templates_path = ['templates'] @@ -128,7 +128,7 @@ #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -html_sidebars = {'**': 'bbcflinks.html'} +#html_sidebars = {'**': 'bbcflinks.html'} # Additional templates that should be rendered to pages, maps page names to # template names. @@ -150,7 +150,7 @@ html_show_sphinx = False # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True +html_show_copyright = False # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the @@ -163,9 +163,6 @@ # Output file base name for HTML help builder. htmlhelp_basename = 'trackdoc' -# Google analytics -googleanalytics_id = "UA-24167610-22" - # -- Options for LaTeX output -------------------------------------------------- # The paper size ('letter' or 'a4'). diff --git a/doc/content/bugs.rst b/doc/content/bugs.rst index e2de629..3654f98 100644 --- a/doc/content/bugs.rst +++ b/doc/content/bugs.rst @@ -1,4 +1,4 @@ ############## Reporting bugs ############## -Our `issue tracking system `_ is found in the github repository. You are welcome to open a new ticket in it if you think you have found a bug. You will however need to create a github account if you don't already have one to open a new issue, sorry. +Our `issue tracking system `_ is found in the github repository. You are welcome to open a new ticket in it if you think you have found a bug. You will however need to create a github account if you don't already have one to open a new issue, sorry. \ No newline at end of file diff --git a/doc/content/installation.rst b/doc/content/installation.rst index 5a07c82..8b406bc 100644 --- a/doc/content/installation.rst +++ b/doc/content/installation.rst @@ -2,19 +2,11 @@ Installation ############ -To install you should download the latest source code from GitHub, either by going to:: +To install you can simply type:: - http://github.com/bbcf/track + $ sudo easy_install empty -and clicking on "Downloads", or by cloning the git repository with:: +That's it. However, if that doesn't work because you don't have sufficient permissions, you can simply install it somewhere else (for instance in your home):: - $ git clone https://github.com/bbcf/track.git - -Once you have the source code, run:: - - $ cd track - $ sudo python setup.py install - -to install it. If you don't have permission to install it in the default directory, you can simply build the source in-place and use the package from the git repository:: - - $ python setup.py build_ext --inplace + $ cd ~ + $ pip install -e git+https://github.com/xapple/track \ No newline at end of file diff --git a/doc/content/licensing.rst b/doc/content/licensing.rst index 21bd0e9..6be3949 100644 --- a/doc/content/licensing.rst +++ b/doc/content/licensing.rst @@ -3,4 +3,4 @@ Licensing ######### The code is free and open source, licensed under the GNU General Public License version 3. You can download, copy or fork the source code on github: - https://github.com/bbcf/track/ + https://github.com/xapple/track \ No newline at end of file diff --git a/doc/templates/bbcflinks.html b/doc/templates/bbcflinks.html deleted file mode 100755 index 48cc7c5..0000000 --- a/doc/templates/bbcflinks.html +++ /dev/null @@ -1,5 +0,0 @@ -

Other BBCF projects

- diff --git a/samples/build.py b/samples/build.py index f2dab8d..e474b1e 100644 --- a/samples/build.py +++ b/samples/build.py @@ -32,6 +32,6 @@ def create_tracks(): for track_name, track_info in sorted(samples[collection].items()): print Color.ylw + "Creating track '" + track_info['name'] + "'" + Color.end from_path = track_info[conversion_info['from']] - to_path = track_info[conversion_info['to']] + to_path = track_info[conversion_info['to']] if os.path.exists(to_path): os.remove(to_path) track.convert(from_path, to_path, assembly = conversion_info['assembly']) diff --git a/setup.py b/setup.py index de16203..d26e8d7 100644 --- a/setup.py +++ b/setup.py @@ -6,9 +6,9 @@ description = 'Python package for reading and writing genomic data', long_description = open('README.md').read(), license = 'GNU General Public License 3.0', - url = 'http://bbcf.epfl.ch/track', - author = 'EPFL BBCF', - author_email = 'webmaster.bbcf@epfl.ch', + url = 'http://xapple.github.com/track/', + author = 'Lucas Sinclair', + author_email = 'lucas.sinclair@me.com', classifiers = ['Topic :: Scientific/Engineering :: Bio-Informatics'], packages = ['track', 'track.parse', @@ -16,7 +16,7 @@ 'track.test', 'track.manips', ], - package_data = {'track': ['genomes.db']}, ext_modules = [Extension('track.pyrow', ['src/pyrow.c'])], scripts = ['track/track'], + install_requires = ['genomes'], ) diff --git a/track/__init__.py b/track/__init__.py index db5c5ef..c5f6407 100644 --- a/track/__init__.py +++ b/track/__init__.py @@ -21,11 +21,13 @@ from track.common import JournaledDict, natural_sort, int_to_roman, roman_to_int from track.common import Color, pick_iterator_elements, get_next_item, is_gzip from track.common import if_url_then_get_url -from track.genomes import Assembly # Compiled modules # from track.pyrow import SuperRow +# Extra modules # +from genomes import Assembly + # Constants # special_tables = ('attributes', 'chrNames', 'types') minimum_fields = ('start', 'end') @@ -790,7 +792,7 @@ def find_column_name(self, synonyms, table_name=None): if table_name is not None: fields = self.fields else: fields = self._get_fields_of_table(table_name) for name in synonyms: - if name in self.fields: return name + if name in fields: return name return '' #-----------------------------------------------------------------------------# diff --git a/track/genomes.db b/track/genomes.db deleted file mode 100644 index ea5f4579dbcf5a92c9171e9636f5792c6c235777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59392 zcmeHw378yJwSR5B_w-Dsr_%{TNFs#vkc`%?y_zQ>85Rd;GAnU1fJ3iINMB?9s;8H+>MBX$deQ)w&OP_s-#vGDuy@n;;*!$T^h9?15|QF4nx>9lvV@{29{y$EA9*c+Z#eP; zeA15ZYkm7Rs_U0;@xgC7b{79X8v9pvAN#!dL#;n*wl_7<)WAPP1IHu)c2O(5&5OWW ziyzx2!|sE3%7<+ef75(5HPF<+zqkgtd2oYls0H3bFwCVhvp8bLya7c;Ul=G8|1kZWJ0l#1D$ zCaJliUMQh#A+IZ1LDHpsUg9-DP}Gv5X$sOy!ALRz7lUhA7n{%ll<(rDEASolO8Ce`ViQ@u-j7m9Kl2I|67X&^p$$CLTx~599CS=8ugcP}`=;}lu zl3Yrzv$lIpPhW3w>vXm_KC;%h2Of3tBEByPWd!4L&;Yk9j==SyjTgtZu&wc8PL*|8 zP;**AEy%K1$>s1xbWKolnx+Y&B#440NTSB8YQB)uM5Ty|N>SeIi*ziMs8Le!Umlz?l!r?iqy% z(R?s)1Nw--XJmj>%a=hTyq=MSjL45s7jn^-tdN%#p;Ri!T2U^Qc&Vreil(YMujWg| zl9Dgwa>YWvxS2J&V6c3l?Bq~!+PWvXi`PbY=mJtkB=@9u3F-*aG9uikK1O|-3oTHK z#e4w?iXi86ik8pikX!&gW(7$p2>BdzMd&J;nk_L^T`&()8QsmkE4Tx4A?Oye(FL`P zB#xcM1!HhGiiiYF%jx-o1dpvG3VIQGw^o9S=$fX=LJn?x3mr)=B6fwl;OgN%L6>$Q zxR}tz3x;7q-xf1Sz$&!cbkM1BSF>ztF`vzH+Kf*3yZex1rpU_h@Lw$-`;WGNO=9va>+u*irzPmUL=7ep|Py+N2$~Uuu^i`*@~Tu)B~ZAW&B=LL5Of7B1PQt<<>aDPQgxY^3aYXxZa!JKR>*KJ z=C!a6Oq)meDe`LD(1coAv3!V5^^WvP&bP9$gbl2}r*QdY~B ziiNCPK)PPcZf>o**w*ai$n+F8k4j)kGtI;4NO6z7or`zKx`H&gft;Wr1btS_gN18~ zs%sJgZI}tXQqT&# zoJXKhKC2gmVom@tz((|(RMNz=TI?rApMkrr;XMui;`Gu+PcWaN+9kqMl<`yKwXu^} z&R4IO-V}`_!JC<*fpM+Xi063&*6fJb$4K}dNSnYLu0YAi!q_G@(yHZUF_)JFUeKVw z$%>>EOFAl)L@`&)qas2jS<1p_u_Y2oE_Pn3ZzMPV4pAN2L2d#&6bXAT-tcG+QvgrR z3uEtK!@+Dx&F1)gA*+4R^ZuR~M=t5T5;2(p3{7#3v(3Gds1;}JZX zS)-|_VgKsY7D`RbH;u&@kJqf}K51l)#CNS(-3@kTxg22x8G({BD1LCb-Ws#y^{5MRpjIXNd5cm)Ei?8amynIhIQvbtvo|I-XB;ngky z27efQA$%f{hGXytk9UeM5Y}Z;0@sZ+p^%550>J=LR8_Sot4LMyIld?>S-B+0XSJIS z$G9~C;jFqZQ(^$xVy z{yFAeiv0pR&bGog%~w+cZzc`&ae6#lolDlTu{cLN&;ah{tC>3RU`hz_A;A;b6HmN4)wy^rQ;o-d z)_IOsR|jnku%3s?L+ zK%A_|jN9QqYkBuw%=NjI)&jWm#Nu@wVtGLcnaP0S}peX)gD)`bpPdwM{#KjscBEFQ3tA#4xKAFye{ z6embMIy4iEyfVz0$WCc{dIGQd$KA-HH3h8@S09sX(0~d0{5saHT9CH=-PojziHm)^ zc4EZt2QcOfrnCf?4^Y25>ZxGluOp1BBLHmdm)P_V1Pi^+=w3txs_v(L^UAfs$X^EN zSds;22b~u3ZVU~NwQqg!LKmhzF|bADGlGmo?K31rpjY{q!N`Rywtt%a0*wEEhYdCV zq^W_X2L72EfblD47 zd=C-x#CowNFpMe#Cm*~&aqjZ?M6Pgd|t1n_s zhT@bFy@U{=m3^Bc;JYA;0;^3BTtg}tCQ>A=S=olr+L3Wy6g5da_Gi)bNBhE6a6G_m z2-gkA6F8wO6HQ;*8-j@>p8A1wcp|9-S}9a7nohtF{l#BL)Bn*MtVGiQtr)BqO(SSL z^W1UK^hbIFm1ruUZNxK`x)i5cXrf5>Toz4VGHiwY@p6bR^!lIadJxZ2st~PZ2#BL$ z?gL3KnEpUQOXxKrVM&go$Co@AOkI3<|kFVTgcgEWPH2k!bo; z5b_%n9|x#7#Gd}`dvU~H1xk{V4oQ(VCfcAXL;vT4i=yd|53*)xjxz>i<_Cg`X2cJP z1H4uM3t2F6GA2E69fBzuDK~T4CyBDe((9J3h^9Y0U`6{R2?2q&1dxIm?H>pdN!G*! zAVs$Qv$sUkA1Yaqe(Nenq#ybP+%{PPutc;Lr9eakE4Yv~P+)O$tgkRp+%i6~Y5P=u z*sHWZoYigjWfrG1o;i%ggVz>Q3 z)a?vC+_ntaKhtfilBlrsj+qmq=_?%kzqTg-@8CYLCR$SiZ&(eqVmf~;isOGj)kVSA zx9M$6oVk--UsL9p`E($)bSXWvb9*+orI_7j@W?h5x0SzRx`$3&J#ylbk=1K@Ph3)N zUy|N7bPKu z0l;@=B!k=FYoZ``&K$!8Qi~SRyOtY*5ylkx^j8SAoHQ?AlHQWd6}PP1uxWhqoQYg< zdL?|U^p?vIdE0v@rzYP!v2Epav9zst_V|{m{5kdyJBriWAkJF3r8v1^`^HKkAs`&z z{@$%ckhycFgAJq-33}HeLs+1Z!B?PCL}-~S>6UYWR7VHBYndTk!DQ4~AHhl~t=74c zw8Q7rBajT?D^w-ngg95y9pw+C7A~ZB9ck#%BwL#A(MlQ3#yJub+kccgmSS&VvuvEX zmpPkRO8+-KLnG>E)FtqX+OL7AJ^wc5QAlXX?f*RvMx1F!V0&2fRp(j^v>|hGlZU0+ zNZ>DL?e|4v1LXvPiHHF48Jr-f57EqS0wM|pqan!`Z5b%%2uwsC5Pyer1oa{E#&ih~ z`Eam(!BxI!bZt3JU?A!M_$p2l)CH(pc)T77p7k}j=g8V}qQJn@0Phu?D5wihBY0Xk z_|2-t#RMufZ#*c^ErC>(pL`|ZA{ zG5?QJ$Kdt<)7da{J5yrX>2J_m=_9BIsrSP#>{tJSGL->eSiqY8+XDBcjh^60ngEpn zmeo_r0RlbN%)$WcQw)bzzx}hm=)!^dl@3Y3y52Xx z2B6!%h_VGC%*LJsV_GnftU|=vemPk;BGI>ig3M1hfH|cG+N%(;Lwc#bZbagc1U}5( zd&^c|bpAl15)omK^g^OuL_}N?(nIWr|Ls%0XmVg)6(aUY&sVQ8)pqQ}DIqPy?K$Ik zU$lK7UWJIg(jVh>%ShZ3Qp4O6fBc>=niy!SLd1UQxwg6yiDN=a$d|iywJ$nvptTAS zd!|3M){SUVAz-MGL;k~O;I88Xu_{DtG0(>8MkLM&NkM9Odl+~8oxaEijP-wO|8KIH|9gW!{HAzK4IC^Dw9f~mgt7kbqpqW<>*yZ( z73NCzgoAZ~gNrkBL?Dn#Ch1*^jdTj$CyW2ZD^n@BX^s*pGknmfr; zrLg5+%$3L;A!h<@VnTq?RwIcOmo9 zJNNAMIe+M=l)B<~b0j;C{|)}nP3&oG5Ox6Pm{$5OdJ{dLy7yr7e}*I00%nn5G~qYsb3rzm^Bd$` zkd3DOY*J8JmyKrr1_>#s4B2S%5A*+>$v;?DItcl{2(=#gKkPbSz1_gPi(%*+f&a%+ zH$n5?{~Dg}vdhNval=VBXu~PF;dVD@!&$lEgbTFs#N6;aH)zATx#74QwBhvJaGM*n z;SAkys~fc8B;9b#4cc&?Zn(t_+Hk7Q=KqxaN#jdyc>HJCAjRIuj=@Ls)zrWtseyro zR!Cvx)$mri#xiSz3(ANV&3HXz>l;}y8%((%M**^tH8V5+e=Wscdq_U^=1n&>@W$7` zdc5l&*8CGo&8;cmoT%r|zXg*1u*?p%e~jvLP?&{OA2YT_7@GlL)1R@GxO?OD)Wp;_ z!vBZDdMf(q=GOH8bL{_H*xdj3#_tME37Z-?cp6wx-v2jO`M=}t` zTL2A;j$&jFUim+Oe9or*9SD*zYgFDBI_Zuy7yg1*{x7)qxod3Z-+>?rwMNl> zp$mHVaN(Q0@_)g-w_jwF{|*F6_-Kme4?n(oCl|ia&i^@50MOSz;nfAb+KBlmsxR{O zeb;f}8_fKF)}8|oLYEbCxBbkQ9)E6)aWI1yaL1*-Nyokq!KB5JCidSTCLT=?sQ?Jmes zfIP>h<-HCh(BM>?i>N97&>wzrI~TskGyfOddmd*K^Sm&fZ8kAalYQ)U%ul)S*F5uo z!M!^kwYhmt0M8CUyoe_Ge4FO2;=*@(=Kq3wM=6`0cR*0$M>NsryYXueaN)Z=^MAp; z@M=V9`ga4q<272;!8B-^RJMPcAkBulH(2RDz4iE=3!UC>I(NrMf771+<3M>KkRWP+c)YojzYavx z-T+aX_qo`I+tbetl-B_Xq6&zs%-#HTAezPoh-&M_XTGC7{fB|_G9W=z0P#3;H-8<7 zrlkR*65qIgv_1XoKzS9AAj*LFc5^F#9f+ox0irx_MfYrbdUl|^2uKj6!0w~&F!%A- zfoR$oAW93L`~9N!^zR4CYk&k%1jMi60h>J6*L~KefdQhpc<0l5+tbeskh%cn-XjEd zFMSG+*L5M9)&+>dl9SInwmtp3e!K#Rx%y>91c-h00-D1$0HT$jJnOyf>8FkHA2vHc zJp_9&WtV>6*w9ibqFIcXv_UNcTr*x8>l-lwXhqQVHD75@f3{iw>&@oln(`jX8ZhdA z;!Geo09>R7GJ%2C>#YI+VC{A$&{Yiu%JLg!APxK1poIKcpSz_cy&I4J3=8r9m*B1W zYHFaVfrG07C=F!h?qOlkvRHP*ZYz-lRm$P?02P<*woj8GwTAG)FGh7yGv%c#0@FQk zaX32pPO<~gDpZB2KP)RjNCDY0C!SFP#MNeH006Cf;G%GJ0^2`FpGwiEGCt-8cHP0f z`9lNE+VeB zf6LqMSz(O+X5Jj1Luc&uH^L3mp0e`-)!BX zDQ{B)jc8zrQU5DSt)kd3vUxVa+{bKVj--D;UqFl0uc(j0FJAxUssV%=UC(#b0OA{6 z%wHR>tiYnf(q1Dg`PCJGG{9?Q8Na#$kP3K>tl?Kz08#+2kp=wf3P5s$tM}CvfTRYO z?yD;Ri4CsXS62WM8eFvR!xezcRRE(x5jK$qR_uG}Sc?i=ks zG6G!nf7C|l0IvE!N~2r=SN$LGN{tZ#T=jpzFEz#jaMk|-&(s(Nz*YYTd{blV|Bm?o zsAl}{c6QB{rUw3XHE^WG|DC4T>)3a(KIThI7WV(&O>d?bP~WDe{}FdSRIUO*h#N=< z&YpXPd2+|=b3s%%Cw9yt?COY@sTYJRlj*+z@y9qP0uwE)MHYmDv+wzCJgR|RzT@UleKs1>@fGASeU;08a{UFkG z2M~EC_rlG|^nNeqPjL2@-g=ln2BOLQ(Rp2`{&Zh|GQH1>`4gPI{)u{+KL(=7`~gIb z-Z}HlWcp<<=1*{T&+dAdKL(=7`~gIjy>Q-Z$@EKJ%%9-wHD}br{4o$s<_{n$>?KFj z$@Gg}%%9-w$9`T9^T$9mnLmIivnL$oOQv7&V*UhYC-)mkxq7;|5vT*8#5{5Aie&ov zb#&}V93>OxPxsX1_Dvg*s*BqCmcuYnm2iDb(o@xu?!f;s5`Y%}2gtN&&HIz-s|@~6 zh)$UMe*?^|VE--j9rOlhI#gdn<$3_bL5<46**29tK{!?b(~LPEz^ zPEV%)Hdw9$Kp>G8oZbCZOxdju(sC*Yp~5f5lIhn5%T)kuNHsWn!Iv;$w?0VAt02TD z$8JofUmYyh0I(sU8|`}3Wa|Lx>#$MHZe+O?1m=4G2b1Yn2FVE^j$uv;&Yu4r^9-$e zAkFoE7(>*~BkxG2|BB;(tNvfQS^w`)b$QMEKIAm89M}Il+KT@t;rw6V|A#8-f89q- z9&D|6RRH7T>yO*vj{OA}LmyT(H4^(PlB%+Smp5M(?`#NOQ0TNRbVn5)8#VLmvD8WPp6XJN~Z$X^zzZDX`&R z1%DLp40`PUlK}Dq?g>B*NOPWa-@3aL@AMhR0y;AP&@&N0e$W+D)Ic-` zYe3Z4ma7-OE#ArD^M9Sw06^?pA3FOm7oscv7kO+xR{W0?Nj(0);^|Kt@&7-s{ukW* zW}MoujHqhdy+9PI=`6GFc`Dwyz^ncj_8(i^6QEk4=4M|-(o~kc@tKx*XUe1g7Zes< zf82yS-md{_#rpuNuwQ%d+q)gAQL0wsP#6ItIGkyGQH39tQs*pZy=j{0kX5>KKD ztnUx6d?wyG&ujl5b|us9xW5)C@g*8!{p;_6+mCzg{}Tapn>+Ha1xlQW#u)ocGBb|>e!qyJi<#G$Af8+h)-*W#Tqy#B|s z9L3(ij>1Rt)zrWtr-31>_Lt+7;r0F>etrU1)vp|>5UScXDvB8%+K8{x1%{qDSBa;8 zJ7iV=a$t^vt)7L?%c;b4*{TSY`o%GUxGEj7q4fi8@y^4Btny!Qel`hov8Os0ADMFi zOne3pET9ulrSojGwLc&4TXHJ zHs=nIt=Y+u=_%3rSXQ|M#A==D`Ax0CAB!tylxmjIRL^ zg^|doYo{6X*Y`D~doD|D|gNPy>({jjXj?`C~Paz60BTh;Fgw|IE$I=}eHml|B=i z4!svCEd~=T^1MdDl0;luta5@?L%jmgud0Q*T4oaI?|YC51aL}ME^ucoYheB{-;gk=p(D`BZ>u;lT?MSBwI2ZtPN0)h#C>B^)#Us(&2I3`u* zavym)k$%8~PJqBOUD@tVSJuKLt_g}Be(u=yiS+k|9CQLAC-|l-j&WxzYhe=Sq>9`v zuiTzUe|N~iCm@*Mov!F~Co5}V68EGE{!4qFN~G@}au5m#Citf-((YVkEllE|R1|pj zoZdwGJ3|ge0l@?hb;Z%{RAntp;-XYOm|6ZGiS)M}^Z&Os=l_SE%WK~8p{#+o!u#zlL_&qhbUgldAhH-S^m0Gc05rB`m7j_{<-Z>X z?3LowxMg!h1QAsx_)yUwdeAWiARtZ~a_M236pTmI1Z9PvLv z6yTO`!|{Kmj5QF=_#b4Hxah_Kf9OR={7(=OAl_Urpc$V6pvbZp9PbakV8s8_OK|=- zdpex|cPpI#*9PbRZG@(O+1E5w5H`B@u(4Z!#w3byX4qZt)_f{(#saCy1XV(jI@X8( zU?qMVG2STvE?GOFHF$b_Q5$N*UI3ZOZCb2CE*iX6z+fqG zk@3C$(7v@Twp%8wV*SjWXIk~d96Nw(DAUYG0U+{!8DxCK5&sL#`2SzlJFliK9Jjsm&jD`&mixh})Dg>kJTZ zVPY`6Vx2$yQ$hg7ya;OoF$$0uc(~abkYD@dtjJZ4-9@qZA<|KX=_{2!n<+HFtH98lMVy^uUk~?qE2?tduoYF9Ev1yZQHK#hc9)+ z|8g__Kln!9L~Lr{jjI94s{hxG>;DzlcB}s1*iMKCJ|)mY^1I26bTXd4f^VRDdghTVYJSj-I-01XY26_7>)?%qJG)fsR%7HvcQ zzY6IZ4Yi^EUlpG3;-_x+2;IH&_GGjbm0;@3m_NLypR0Tv4aedYFC+?4m) zwj(zcFmhApt&N%WBW*P{n3#h6f2(t_9rZtR#OWT1t{UcFPILt#*|UzVji}a*IyTp7p(<*z>|V>asR$Rbdg>8*TNHGgRebdC)aA@K`ksewAGvo10D*{ zD?fI2AbNNoYYnXy9*PaV`ZyU{Yr%;b8P1M`e1(yA0XRNHKXOVc5bc2cpJ}UcBQH%) z(3fRSusI_(o@m&r@i+tppHB&oLxyv2NBXu~tH_$f_^#*;M9yO&|7S#YN%Qh$me2N2l8-LE}APw?P)EVDqikP*QL5`#q?z4E5kKxCh7 z{}vvKEV|G_Zzb0>OxJCJ==->@IIv5=QV;Ps+#!1H#uf+CGHS7MoiJp2>)TRawo(BFG3UY0j diff --git a/track/genomes.py b/track/genomes.py deleted file mode 100644 index b9e9e5e..0000000 --- a/track/genomes.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -Provides easy access to some meta data about genome assemblies. You can retrieve the list of chromosomes for any assembly. In addition, you can get the lengths in base pairs of every chromosome. -""" - -# Built-in modules # -import os, re, sqlite3 - -# The database # -path = os.path.abspath(os.path.dirname(__file__)) + '/genomes.db' -connection = sqlite3.connect(path) -cursor = connection.cursor() - -# The list of assemblies # -cursor.execute("select name from sqlite_master where type='table'") -assemblies = [x[0] for x in cursor if x[0] != 'assemblies'] - -################################################################################ -class Assembly(object): - """The only object provided by the library. - - :param assembly: A valid assembly name such as 'sacCer2'. - :type assembly: string - """ - - def __init__(self, assembly): - # Record the name # - self.name = assembly - # Check the input type # - if not isinstance(assembly, basestring): - raise TypeError('The assembly parameter needs to be a string such as "sacCer2".') - if not assembly in assemblies: - raise TypeError('The assembly "%s" was not found in the database.' % assembly) - # Load the chromosome data # - cursor.execute("select * from '%s'" % assembly) - columns = [x[0] for x in cursor.description] - self.chromosomes = [dict(zip(columns,chrom)) for chrom in cursor] - # Cut the synonyms # - for chrom in self.chromosomes: - chrom['synonyms'] = chrom['synonyms'].split(',') if chrom['synonyms'] else [] - - def __repr__(self): return '<%s object "%s">' % (self.__class__.__name__, self.name) - - @property - def chrmeta(self): - """A dictionary of chromosome metadata: - - :: - - >>> from genomes import Assembly - >>> a = Assembly('TAIR10') - >>> print a.chrmeta - {u'c': {'length': 154478, 'refseq': u'NC_000932.1'}, u'm': {'length': 366924, 'refseq': u'NC_001284.2'}, u'1': {'length': 30427671, 'refseq': u'NC_003070.9'}, u'3': {'length': 23459830, 'refseq': u'NC_003074.8'}, u'2': {'length': 19698289, 'refseq': u'NC_003071.7'}, u'5': {'length': 26975502, 'refseq': u'NC_003076.8'}, u'4': {'length': 18585056, 'refseq': u'NC_003075.7'}} - """ - result = {} - for chrom in self.chromosomes: - chrom_info = {} - chrom_info['length'] = chrom['length'] - chrom_info['refseq'] = '%s.%s' % (chrom['refseq_locus'], chrom['refseq_version']) - result[chrom['label']] = chrom_info - return result - - def guess_chromosome_name(self, chromosome_name): - """Searches the assembly for chromosome synonym names, and returns the canonical name of the chromosome. - - :param chromosome_name: Any given name for a chromosome in this assembly. - :type chromosome_name: string - - :returns: The same or an other name for the chromosome. Returns None if the chromosome is not known about. - - :: - - >>> from genomes import Assembly - >>> a = Assembly('sacCer2') - >>> print a.guess_chromosome_name('chrR') - 2micron - >>> a = Assembly('hg19') - >>> print a.guess_chromosome_name('NC_000023.9') - chrX - """ - # Convert to unicode # - chromosome_name = unicode(chromosome_name) - # Check for synonyms # - for chrom in self.chromosomes: - if chromosome_name in chrom['synonyms']: return chrom['label'] - # Check for NCBI nomenclature # - if chromosome_name.startswith('NC_'): - name = re.sub('\.[0-9]+$', '', chromosome_name) - for chrom in self.chromosomes: - if name == chrom['refseq_locus']: return chrom['label'] - # Do some guessing # - name = chromosome_name.lstrip('chr') - for chrom in self.chromosomes: - if name == chrom['name']: return chrom['label'] - if name == chrom['label'].strip('chr'): return chrom['label'] - -################################################################################ -if __name__ == "__main__": - import doctest - doctest.testmod() diff --git a/track/serialize/__init__.py b/track/serialize/__init__.py index 3f3ef0e..bfb2c0b 100644 --- a/track/serialize/__init__.py +++ b/track/serialize/__init__.py @@ -6,7 +6,7 @@ import sys # Other modules # -from track.genomes import Assembly +from genomes import Assembly # Variables # serializers = {