From b2bd6208f5df393feef635d872c281ada3dc8947 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Tue, 23 Jun 2020 10:11:13 +0100 Subject: [PATCH 01/16] Initial commit --- README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b9689a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# annotateVCF + +This project hosts scripts to annotate VCF files using user defined genomic locations and vcf header data \ No newline at end of file From a576ab90b7f6498ac046795a109f46df922d0d1c Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Tue, 23 Jun 2020 18:40:16 +0100 Subject: [PATCH 02/16] first_commit --- .gitignore | 22 ++ CHANGES.md | 2 + LICENSE | 675 +++++++++++++++++++++++++++++++++++ annotate/__init__.py | 0 annotate/abstractAnnotate.py | 21 ++ annotate/annotate_cmd.py | 62 ++++ annotate/annotate_vcf.py | 180 ++++++++++ annotate/config/logging.conf | 44 +++ annotate/formatInput.py | 57 +++ annotate/staticMethods.py | 52 +++ requirements.txt | 1 + setup.py | 23 ++ 12 files changed, 1139 insertions(+) create mode 100644 .gitignore create mode 100644 CHANGES.md create mode 100644 LICENSE create mode 100644 annotate/__init__.py create mode 100644 annotate/abstractAnnotate.py create mode 100644 annotate/annotate_cmd.py create mode 100644 annotate/annotate_vcf.py create mode 100644 annotate/config/logging.conf create mode 100644 annotate/formatInput.py create mode 100644 annotate/staticMethods.py create mode 100644 requirements.txt create mode 100644 setup.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cb4954a --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +env +**/__pycache__/ +**/*.pyc +*.py[cod] +*$py.class +.coverage +cover/ +htmlcov +/.eggs +*.egg +/build +/dist +*.log +/results.tsv +/.cache* +/distribute* +/.idea +/tmp* +.nfs* +.idea +.pytest_cache* +annotateVcf.egg-info/ diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..bef1c51 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,2 @@ +## 1.0.0 + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..10926e8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/annotate/__init__.py b/annotate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/annotate/abstractAnnotate.py b/annotate/abstractAnnotate.py new file mode 100644 index 0000000..bdae0aa --- /dev/null +++ b/annotate/abstractAnnotate.py @@ -0,0 +1,21 @@ +from abc import ABC, abstractmethod + + +class AbstractAnnoate(ABC): + ''' + abstract class inilializes files to be comapred and implements two required methods + to check user input and load config file + ''' + + def __init__(self, **kwargs): + self.vcffile = kwargs['vcf_file'] + self.drv_mut = kwargs['driver_mutations'] + self.drv_genes = kwargs.get('driver_genes') + self.genome_tab = kwargs.get('genomic_loc') + self.outdir = kwargs.get('outdir') + self.info_header = kwargs.get('info_header') + super().__init__() + + @abstractmethod + def check_input(self): + pass diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py new file mode 100644 index 0000000..d180060 --- /dev/null +++ b/annotate/annotate_cmd.py @@ -0,0 +1,62 @@ +from annotate.formatInput import AnnotateVcf +import sys +import os +import argparse +import pkg_resources +import logging.config + +configdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config/') +header_info = configdir + 'info.txt' +log_config = configdir + 'logging.conf' +genome_tab = configdir + 'genome.tab.gz' +drv_gene= configdir + 'drv_genes.txt' +drv_mut= configdir + 'drv_mutation.tab.gz' +logging.config.fileConfig(log_config) +log = logging.getLogger(__name__) + +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) +version = pkg_resources.require("annotateVcf")[0].version + +def main(): + usage = "\n %prog [options] -vcf test.vcf -mut mut.tsv.gz -gene gene_names.txt -hl vcf_header.txt " + + optParser = argparse.ArgumentParser(prog='annotateVcf', formatter_class=argparse.ArgumentDefaultsHelpFormatter)) + optional = optParser._action_groups.pop() + required = optParser.add_argument_group('required arguments') + + required.add_argument("-vcf", "--vcf_file", type=str, dest="vcf_file", required=True, + default=None, help="vcf_file to annotate") + + optional.add_argument("-muts", "--driver_mutations", type=str, dest="driver_mutations", required=True, + default=drv_mut, help="tab separated driver mutation input file (Bgzip-compressed and tabix-indexed file with annotations), see http://samtools.github.io/bcftools/bcftools.html#annotate") + + optional.add_argument("-genes", "--driver_genes", type=str, dest="driver_genes", required=True, + default=drv_gene, help=" file containing list of driver genes, one per line") + + optional.add_argument("-gl", "--genomic_loc", type=str, dest="genomic_loc", required=True, + default=genome_tab, help=" tab separated file containing genomic locations, created from genome indedx file") + + optional.add_argument("-ih", "--info_header", type=str, dest="info_header", required=True, + default=header_info, + help=" VCF INFO header field file, refer http://samtools.github.io/bcftools/bcftools.html#annotate") + + optional.add_argument("-o", "--outfile", type=str, dest="outfile", + default=None, help="path to outfile file, STOUT if not provided") + + optional.add_argument("-v", "--version", action='version', version='%(prog)s ' + version) + optional.add_argument("-q", "--quiet", action="store_false", dest="verbose", required=False, default=True) + + optParser._action_groups.append(optional) + if len(sys.argv) == 0: + optParser.print_help() + sys.exit(1) + opts = optParser.parse_args() + if not opts.vcf_file: + sys.exit('\nERROR Arguments required\n\tPlease run: annotate_vcf.py --help\n') + print("Annotating VCF files") + # vars function returns __dict__ of Namespace instance + myannotate=AnnotateVcf(**vars(opts)) + myannotate.run_analysis() +if __name__ == '__main__': + main() + diff --git a/annotate/annotate_vcf.py b/annotate/annotate_vcf.py new file mode 100644 index 0000000..7f85fe3 --- /dev/null +++ b/annotate/annotate_vcf.py @@ -0,0 +1,180 @@ +import os +import sys +import argparse +import itertools +import logging +from subprocess import Popen, PIPE, STDOUT + +logging.basicConfig(filename='example.log',level=logging.DEBUG) + +version = "1.0.0" + +""" + This script annotate vcf file using bcftools annotate functionality and custom python code... + +""" + +# print data frame + +BCFTOOLS_ALL_PASS_CMD='bcftools view -f PASS {} | bgzip -c >{} && tabix -p vcf {}' + +BCFTOOLS_GENE_CMD='bcftools view -f PASS {} | bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ + '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV >{}' + +BCFTOOLS_MUT_CMD='bcftools view -f PASS {} | ' \ + 'bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV |' \ + 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -p vcf {}' + +BGZIP_TABIX_CMD='cat {} | bgzip -c > {} && tabix -p vcf {}' + +BCFTOOLS_CONCAT_VCF='bcftools concat -a --rm-dups all {} {} {} | bgzip -c >{} && tabix -p vcf {}' + +def merge_files(**opt): + """ + :param opt: extension of file containing vaf values, vaf_cutoff + :return: + """ + vcf_file = opt['vcf_file'].strip() + driver_mut_file = opt['driver_mutations'].strip() + driver_gene_file = opt['driver_genes'] + genome_loc = opt['genomic_loc'] + info_header = opt['info_header'] + with open(driver_gene_file) as f: + driver_gene_annot_list=f.read().splitlines() + run_bcftools(vcf_file,driver_mut_file,driver_gene_annot_list,genome_loc,info_header) + + return + +def run_bcftools(vcf_file, driver_mut_file, driver_gene_annot_list, genome_loc, info_header): + """ + :param count_file: + :return: + """ + global BCFTOOLS_GENE_CMD + global BCFTOOLS_MUT_CMD + + (out_file_name_no_ext,file_ext)=_get_file_metadata(vcf_file) + vcf_out_mut=out_file_name_no_ext+'.mut'+file_ext + cmd = BCFTOOLS_MUT_CMD.format(vcf_file, driver_mut_file, info_header, + vcf_out_mut, vcf_out_mut) + run_command(cmd) + + vcf_out_gene = out_file_name_no_ext + '.gene.vcf' + cmd = BCFTOOLS_GENE_CMD.format(vcf_file, genome_loc, info_header, + vcf_out_gene) + + run_command(cmd) + + vcf_out_gene_filtered = filter_lof_genes(vcf_out_gene, driver_gene_annot_list, out_file_name_no_ext) + vcf_out_pass=out_file_name_no_ext+'.pass'+file_ext + cmd=BCFTOOLS_ALL_PASS_CMD.format(vcf_file,vcf_out_pass,vcf_out_pass) + + run_command(cmd) + # merge all files in order mut, gene and pass + drv_annot_outfile = out_file_name_no_ext + '.drv' + file_ext + cmd=BCFTOOLS_CONCAT_VCF.format(vcf_out_mut, vcf_out_gene_filtered, vcf_out_pass, drv_annot_outfile, drv_annot_outfile ) + + run_command(cmd) + + return None + +def filter_lof_genes(vcf_out_gene, driver_gene_annot_list, out_file_name_no_ext): + filtered_outfile=out_file_name_no_ext+'.gene.filtered.vcf' + fh = open(filtered_outfile,"w") + with open(vcf_out_gene) as gene_f: + for line in gene_f.readlines(): + #write headwr lines + if line.startswith('#'): + fh.write(line) + else: + gene=(line.split(';VD=')[1]).split('|')[0] + #write matching LoF genes with LoF effect.... + if gene in driver_gene_annot_list: + fh.write(line) + fh.close() + filtered_outfile_gzip=filtered_outfile+'.gz' + cmd=BGZIP_TABIX_CMD.format(filtered_outfile, filtered_outfile_gzip, filtered_outfile_gzip, ) + run_command(cmd) + return filtered_outfile_gzip + + +def _get_file_metadata(full_file_name): + """ + takes file path as input and gives its path and processed extension + # If there are two extensions adds second extensions as prefix + """ + (_, name) = os.path.split(full_file_name) + (name_no_ext, first_ext) = os.path.splitext(name) + (name_no_ext2, second_ext) = os.path.splitext(name_no_ext) + first_ext = second_ext + first_ext + return name_no_ext2, first_ext + +def run_command(cmd): + """ + : runs external command + :param cmd: + :return: command output + """ + """ runs command in a shell, returns stdout and exit code""" + if not len(cmd): + raise ValueError("Must supply at least one argument") + try: + # To capture standard error in the result, use stderr=subprocess.STDOUT: + cmd_obj = Popen(cmd, stdin=None, stdout=PIPE, stderr=PIPE, + shell=True, universal_newlines=True, bufsize=-1, + close_fds=True, executable='/bin/bash') + logging.info("running command:{}".format(cmd)) + (out, error) = cmd_obj.communicate() + exit_code = cmd_obj.returncode + if (exit_code == 0): + logging.info("bcftools run successfully") + else: + logging.debug("Error: bcftools exited with non zero exit status, please check log file more details") + logging.error("OUT:{}:Error:{}:Exit:{}".format(out, error, exit_code)) + return 0 + except OSError as oe: + logging.error("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) + sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) + +def main(): + usage = "\n %prog [options] -vcf test.vcf -mut mut.tsv.gz -gene gene_names.txt -hl vcf_header.txt " + + optParser = argparse.ArgumentParser(prog='jaccard_index') + optional = optParser._action_groups.pop() + required = optParser.add_argument_group('required arguments') + + required.add_argument("-vcf", "--vcf_file", type=str, dest="vcf_file", required=True, + default=None, help="vcf_file to annotate") + + required.add_argument("-muts", "--driver_mutations", type=str, dest="driver_mutations", required=True, + default=None, help="tab separated driver mutation input file (Bgzip-compressed and tabix-indexed file with annotations), see http://samtools.github.io/bcftools/bcftools.html#annotate") + + required.add_argument("-genes", "--driver_genes", type=str, dest="driver_genes", required=True, + default=None, help=" file containing list of driver genes, one per line") + + required.add_argument("-gl", "--genomic_loc", type=str, dest="genomic_loc", required=True, + default=None, help=" tab separated file containing genomic locations, created from genome indedx file") + + required.add_argument("-ih", "--info_header", type=str, dest="info_header", required=True, + default=None, + help=" VCF INFO header field file, refer http://samtools.github.io/bcftools/bcftools.html#annotate") + + optional.add_argument("-o", "--outfile", type=str, dest="outfile", + default=None, help="path to outfile file, STOUT if not provided") + + optional.add_argument("-v", "--version", action='version', version='%(prog)s ' + version) + optional.add_argument("-q", "--quiet", action="store_false", dest="verbose", required=False, default=True) + + optParser._action_groups.append(optional) + if len(sys.argv) == 0: + optParser.print_help() + sys.exit(1) + opts = optParser.parse_args() + if not opts.vcf_file: + sys.exit('\nERROR Arguments required\n\tPlease run: annotate_vcf.py --help\n') + print("Annotating VCF files") + # vars function returns __dict__ of Namespace instance + merge_files(**vars(opts)) + +if __name__ == "__main__": + main() diff --git a/annotate/config/logging.conf b/annotate/config/logging.conf new file mode 100644 index 0000000..4a12aab --- /dev/null +++ b/annotate/config/logging.conf @@ -0,0 +1,44 @@ +[loggers] +keys=root,annotate,log02 + +[handlers] +keys=fh01,hand02 + +[formatters] +keys=simpleFormatter,form02 + +[logger_root] +level=NOTSET +handlers=fh01,hand02 + +[logger_annotate] +level=DEBUG +handlers=fh01 +qualname=annotate +propagate=1 + +[handler_fh01] +class=FileHandler +level=DEBUG +formatter=simpleFormatter +args=('log_annotateVCF.log','w') + +[logger_log02] +level=INFO +handlers=hand02 +propagate=1 +qualname=compiler.parser + +[handler_hand02] +class=StreamHandler +level=INFO +formatter=form02 +args=(sys.stdout,) + +[formatter_simpleFormatter] +format=%(asctime)s - %(name)s - %(levelname)s - %(message)s:%(module)s:%(funcName)s:LINE#:%(lineno)d +datefmt=%Y-%m-%d %H:%M:%S + +[formatter_form02] +format=%(asctime)s - %(levelname)s - %(message)s +datefmt=%Y-%m-%d %H:%M:%S diff --git a/annotate/formatInput.py b/annotate/formatInput.py new file mode 100644 index 0000000..cdcefb1 --- /dev/null +++ b/annotate/formatInput.py @@ -0,0 +1,57 @@ +import logging +import json +import os +import sys +from annotate.abstractAnnotate import AbstractAnnotate +from annotate.staticMethods import StaticMthods as SM +log = logging.getLogger(__name__) + +''' + This code run's bcftools to annoate driver gene and varinat sites +''' + + +class AnnotateVcf(AbstractAnnotate): + """ + Main class , loads user defined parameters and files + """ + + def check_input(self): + """ + check input type and presence of user supplied + input files + """ + super().check_input() + input_type = [] + for infile in (self.vcf_file): + input_type.append(SM.input_checker(infile)) + return input_type + + def run_analysis(self): + """ + method to run the analysis + """ + controls = self.ncontrols + min_read_count = self.minreads + min_target_genes = self.mingenes + ignored_genes = self.ignored_genes + cpus = self.num_processors + outdir = self.outdir + gene_sig_dir = self.gene_sig_dir + result_cfg = self.results_cfg + iter = self.numiter + + global MAGECK_CMD + if outdir: + os.makedirs(outdir + '/mageckOut', exist_ok=True) + os.makedirs(outdir + '/bagelOut', exist_ok=True) + + # check input files + (input1, input2) = self.check_input() + + if input1 and input2: + log.info("Running analysis, input file checks DONE.....") + cldf = SM.combine_count_n_library(self.countfile, self.libfile, outdir=outdir) + else: + sys.exit('Input data is not in required format, see inputFormat in README file') + diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py new file mode 100644 index 0000000..e7814e2 --- /dev/null +++ b/annotate/staticMethods.py @@ -0,0 +1,52 @@ +import sys +import os +import tarfile +import json +import io +import tempfile +from subprocess import Popen, PIPE, STDOUT +import logging +import pkg_resources + +log = logging.getLogger(__name__) + +BCFTOOLS_ALL_PASS_CMD='bcftools view -f PASS {} | bgzip -c >{} && tabix -p vcf {}' + +BCFTOOLS_GENE_CMD='bcftools view -f PASS {} | bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ + '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV >{}' + +BCFTOOLS_MUT_CMD='bcftools view -f PASS {} | ' \ + 'bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV |' \ + 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -p vcf {}' + +BGZIP_TABIX_CMD='cat {} | bgzip -c > {} && tabix -p vcf {}' + +BCFTOOLS_CONCAT_VCF='bcftools concat -a --rm-dups all {} {} {} | bgzip -c >{} && tabix -p vcf {}' + +class StaticMthods(object): + """ Static methosds for common tasks """ + + def __init__(self): + super().__init__() + + def input_checker(infile): + """ + checks user input file and returns it's type + """ + try: + if tarfile.is_tarfile(infile): + log.info(("input is an archive:", infile)) + return 'tar' + else: + log.info(("input is a file:", infile)) + return 'file' + except IsADirectoryError: + return 'dir' + except IOError as ioe: + sys.exit('Error in reading input file:{}'.format(ioe.args[0])) + + # ------------------------------Analysis methods--------------------------------- + @staticmethod + def combine_count_n_library(countfile, libfile, outdir='./'): + print("hello") + return None diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c0c3b05 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pytest-cov==2.5.1 diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..64012f3 --- /dev/null +++ b/setup.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 + +from setuptools import setup + +config = { + 'version': '1.0.0', + 'name': 'annotateVcf', + 'description': 'Tool to annotate vcf files...', + 'author': 'Shriram Bhosle', + 'url': 'https://gitlab.com/translation/annotatevcf', + 'author_email': 'cgphelp@sanger.ac.uk', + 'python_requires': '>= 3.3', + 'setup_requires': ['pytest','pytest-cover', 'radon'], + 'install_requires': ['tzlocal'], + 'packages': ['annotateVcf'], + 'package_data': {'annotateVcf':['config/*.conf','config/*.tbi','config/*.tab.gz']}, + 'entry_points': { + 'console_scripts': ['annotateVcf=annotate.annotate_cmd:main'], + } +} + +setup(**config) + From a228a888ed917dc6d2c095b0bde1ac6a0641c8df Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Tue, 30 Jun 2020 16:56:46 +0100 Subject: [PATCH 03/16] add first working version --- .github/testData/input.drv.vcf.gz | Bin 0 -> 26327 bytes .github/testData/input.drv.vcf.gz.tbi | Bin 0 -> 1757 bytes .github/testData/input.genes.lof.vcf.gz | Bin 0 -> 24729 bytes .github/testData/input.genes.lof.vcf.gz.tbi | Bin 0 -> 345 bytes .github/testData/input.muts.vcf.gz | Bin 0 -> 25042 bytes .github/testData/input.muts.vcf.gz.tbi | Bin 0 -> 643 bytes .github/testData/input.pass.vcf.gz | Bin 0 -> 26078 bytes .github/testData/input.pass.vcf.gz.tbi | Bin 0 -> 1777 bytes .github/testData/input.vcf.gz | Bin 0 -> 26832 bytes .github/testData/input.vcf.gz.tbi | Bin 0 -> 1831 bytes .gitignore | 1 + annotate/abstractAnnotate.py | 12 +- annotate/annotate_cmd.py | 44 +- annotate/annotate_vcf.py | 180 -------- annotate/config/driver_genes.txt | 458 ++++++++++++++++++++ annotate/config/driver_mutations.tsv.gz | Bin 0 -> 171415 bytes annotate/config/driver_mutations.tsv.gz.tbi | Bin 0 -> 28065 bytes annotate/config/genome.tab.gz | Bin 0 -> 19066 bytes annotate/config/genome.tab.gz.tbi | Bin 0 -> 45526 bytes annotate/config/lof_consequences.txt | 5 + annotate/config/vcf_info.txt | 1 + annotate/formatInput.py | 41 +- annotate/staticMethods.py | 158 ++++++- setup.py | 4 +- 24 files changed, 666 insertions(+), 238 deletions(-) create mode 100644 .github/testData/input.drv.vcf.gz create mode 100644 .github/testData/input.drv.vcf.gz.tbi create mode 100644 .github/testData/input.genes.lof.vcf.gz create mode 100644 .github/testData/input.genes.lof.vcf.gz.tbi create mode 100644 .github/testData/input.muts.vcf.gz create mode 100644 .github/testData/input.muts.vcf.gz.tbi create mode 100644 .github/testData/input.pass.vcf.gz create mode 100644 .github/testData/input.pass.vcf.gz.tbi create mode 100644 .github/testData/input.vcf.gz create mode 100644 .github/testData/input.vcf.gz.tbi delete mode 100644 annotate/annotate_vcf.py create mode 100644 annotate/config/driver_genes.txt create mode 100644 annotate/config/driver_mutations.tsv.gz create mode 100644 annotate/config/driver_mutations.tsv.gz.tbi create mode 100644 annotate/config/genome.tab.gz create mode 100644 annotate/config/genome.tab.gz.tbi create mode 100755 annotate/config/lof_consequences.txt create mode 100644 annotate/config/vcf_info.txt diff --git a/.github/testData/input.drv.vcf.gz b/.github/testData/input.drv.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..b82b1feccef63df80dca39e51e81a25676b72254 GIT binary patch literal 26327 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 literal 0 HcmV?d00001 diff --git a/.github/testData/input.drv.vcf.gz.tbi b/.github/testData/input.drv.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..ada869b39b57ca26ffaaec8e5dbdccc63e07f068 GIT binary patch literal 1757 zcmb2|=3rp}f&Xj_PR>jWOpI^O?B#QG6kxlsS4c`Yl!_O8@k#{^g$wCKOF6npGrbY#-bcd@gy} zR?i-1s~tO^9R7YYcYdG#Cf6TpLhaA*`!094%59R0CpFO%eX~{f%A7Q`s=IA=PrG?m z^?&{O$M335qrdW@*z-xhhRJKa_b-P33=HyUK_JEW_O4-;6EFxK)OtxByyny-mYMU2 z)kVOONlw9iqqn$zg1EpN+wSKd80H=LE;DWWM&qe1`3XO7+`OrMX8ygj_VXd)K+FCw zpZhB&E_hW|{j-a!#U56PzyJO>ZQGjU^>Yc#lQOte#!l< zIsgCs;j(F%M%5h9c8J)lh%IPtFuXlu$aN@yhwVYgYr{LXO%K*MZSPxq{%U{?1W-nDGe{`E-9yKa7o>=<=R_6?r%P z{qYZleQWl%?EX^wU2W5*^3}xz!qe#Y&A)H>Hoo5ZuF|f(;4Z7~=OXbhq0dqC*(8;p z%=d-d79Pgt$A=7W&mQDtG8ACF5V(bLb;Mf-0qzfKCk`ofnBHvYVy(O_rE~Z|PQd%B ziRJ=wKcDz7x;gi@hBLC$LG1fQQRk9H4Yk(s&%E3BvUJ+dy|PxZyXL0Hz5i=>caGAr z{P(ZtdDi&tKU4SiYQ27U_;hSxfNm%OH7Dygz4UwSB<;Z3cOp~gMFnZ124Kh61{8<%gNZvHMG?pC-?G{(vNHMKXUSC%D| z*WM8953b$4?~Pgh?@i&C|Ft0n#izI2*%{xYu=%tDn1K`-84NfW3{*HZKP0T@YU7!4 hR_D{-u0$GSq1vxmKf-6&dOpG|y`>qL!Sxx40066O|7QRI literal 0 HcmV?d00001 diff --git a/.github/testData/input.genes.lof.vcf.gz b/.github/testData/input.genes.lof.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..5f27adc79f57290e817de6065b8ad1f86a9ae1e4 GIT binary patch literal 24729 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 literal 0 HcmV?d00001 diff --git a/.github/testData/input.muts.vcf.gz.tbi b/.github/testData/input.muts.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..5abc640432ad13f283c586de9688156b1475324d GIT binary patch literal 643 zcmb2|=3rp}f&Xj_PR>jWKN#Mg-pI-1D8PEb)-hY);E4|cAp%bgE}dXD-pDAN?7fk3 zBl~XS!tY@gdrvUkJ8-7i-uU?2eJ|Ptsy24_uT+yizVZC@*EQG9xEfDC8?$_8j@+y0 zx|((GmVXHeyQ%c&THdV9@9t(_NmKEhL{;=JS^rz2gp;7|>N&P%H-An0e%I!1U3mS4 zdlOKsk*s7s`zi4X!+!<_c{GpzV|aV_ASaU{(Bl_pC$TD-DdaIKb%b+&$P+Gmc$DqP zYSxHJtPzdUP8}@V1rJ##u}@z4@P9;Z-tiawK)yZ`T_nqB*Qm=Z)v;SrD z%J!d6jw<)S@6k{9eRr;Yo_a1ycjxNqwcDO-+VANJ2 zy*z^FgR8vrovrh$rQ<&Da>lOv&r5a#AEOJ{yr0ML_NXEwg8>JF!K%Qfu=5{QC3H00 jKJ)15dWmhhx5-1-*Rw6Gm~mv`Ow7=hW?%-VIuHQ>N_-D7 literal 0 HcmV?d00001 diff --git a/.github/testData/input.pass.vcf.gz b/.github/testData/input.pass.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..4ff50bddc2d1424b6e598ab611b206cceba6a204 GIT binary patch literal 26078 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 literal 0 HcmV?d00001 diff --git a/.github/testData/input.pass.vcf.gz.tbi b/.github/testData/input.pass.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..260b2a33f13f4f7a80bb02183e9d5fd75583f432 GIT binary patch literal 1777 zcmb2|=3rp}f&Xj_PR>jWjEry3?dD{16kvPsbz)@m#F-QQE##+5aB!t5JyVjHeYf5T(^rfzFyi4(`!M`l{5FRwn+UA-%&-H^@D-SD{Ka>LCt zHX9`u2f5|QI`59yP`l*l_LrXn^kSc#4EtgGz4Vuhz4zbmHkJ35R{dS~JU(*O_3GC< z-#v;}_MD_bJ9N_iFT>jXLiP;*85rczLf{C)+fy4kTLJ`JFRo9GXiCt~StOB@##ojt ze7j*LZ)9JmyqbWyxxl&RhX+zGU0PRsiXx}pPxz~d#h;%nzw7CI_T9fheo=06#FF3p ze7F4Hzj&7vveJ{+E0~&96nwFH;x5D6+lE|+97I?ygm$#{u66Ab;_R3@;ac~S6SjLA zV%I&qy6K^?(6-H7hkkFcnK4(}Co6A$_$hbF!~ESt!~O4OT~f5(HZk_y!_Tt+Q|-#P zhtIvnhwO4N`%nFI+k>05BfhcxRn{qIy>GQ?llh$MJ@8onbC5IIMHIX-UTI6 z5!MTV#*R4${6)A zyP^$l0TSa=d~W#tVgaYsMdsc&b0@~ky;N=7zx(UXlGB*(M$!fhu7A7c2E1GUZ1?K# zrABFAclKTOz4r4{ZN9x%QzDCXSywcPi_Y_4u}}wAcCGDQkZ6j`y`QkMnBf z?rw7alpW9U?~o<7khsV2_Uu8&S^6 zF47+!%|3nm@07TekPq&kFhf_G0h#ND6bpia(i$`EK*6 zzUd-za^Km=BX3RSlup0D|Fe=^`tF)?Z0W7N@5Ka9=89Sm=eDl#${a4;AIC9N#| ozAE8F!_6~~uAZ0JmV2A(D11FzZJ~3Y=OfG_U7CRzT*rY30AIz_Q2+n{ literal 0 HcmV?d00001 diff --git a/.github/testData/input.vcf.gz b/.github/testData/input.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..b87a8ff7d37e63536fd378e09fe9995ff1a38da1 GIT binary patch literal 26832 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 DZd856 literal 0 HcmV?d00001 diff --git a/.github/testData/input.vcf.gz.tbi b/.github/testData/input.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..ad111783fdff1c5ccbedc0f443ac6989e57bbf1a GIT binary patch literal 1831 zcmb2|=3rp}f&Xj_PR>jWx{Pnn*?O@!3b0*>V-`G;Qmm~1;5^rAr4@~vx|>fbJzJOX zM)Al25B&$aXZE(be-JxYQp);@v*r4Q`-`)dbw|xP>-Ku-l&SyvW*xqnCHMXNw||Mt zkCmOhJFD9Cd$wP;98aXZU)zfLd8eZ6AFS(sc>3MTDv4jEqWk<8|F0DMdfR4B@8bW4 zomF2A=4`LK)~~+yzfkw{|CaTO|JY1_Tf48?mUs8H^H$$0?fUE9P5qrO_xJAG?|zou zDxQ;Qho0>JD1GDBrE?7b85rczLhB^M+fy4kTLJ`FF1(+b$STNyA&A)7xy{vm(eEW{IU(me&=ifh1oH`Mq7|B9R!8dvDIJ#w%Hy6I*KV6&D zUTgGy($>#AqUVPPzMWA2KwMQYp$1z}JYslzb|Ww-1b{)Yg>m->D}gl!&KwbHdF&uC z+h7}$uZzx!FPF3rw?hXR1HEgqeIg2Aeb`9^BP2StS@KkJ`ISFQM-r#$Ob#rbz%JoMN9`Ty}|nKSE)%VKks_p+SRKu`E>HRRch9~ALpbC9*tgaoqB!s zobTWN{jaqvL2?6W5r9ME{*BhDr?*`9b(y$k)*M%xZ|gVbeg2&uccfxl_d;i+DF1&< z-DdZ`OW1te$?*25Auodg2ZKRR0=KQTy0o0ngm0Noev2O7mV2Ap==ZDDjAyF(D_1_k OEZn6Tn87t8hyVc9{S3kY literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore index cb4954a..f5568ae 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,4 @@ htmlcov .idea .pytest_cache* annotateVcf.egg-info/ +farm5.sh diff --git a/annotate/abstractAnnotate.py b/annotate/abstractAnnotate.py index bdae0aa..248fa15 100644 --- a/annotate/abstractAnnotate.py +++ b/annotate/abstractAnnotate.py @@ -1,19 +1,21 @@ from abc import ABC, abstractmethod -class AbstractAnnoate(ABC): +class AbstractAnnotate(ABC): ''' abstract class inilializes files to be comapred and implements two required methods to check user input and load config file ''' def __init__(self, **kwargs): - self.vcffile = kwargs['vcf_file'] - self.drv_mut = kwargs['driver_mutations'] + print(kwargs) + self.vcf_file = kwargs['vcf_file'] + self.drv_muts = kwargs['driver_mutations'] self.drv_genes = kwargs.get('driver_genes') - self.genome_tab = kwargs.get('genomic_loc') + self.genome_loc = kwargs.get('genomic_loc') + self.lof_consequences = kwargs.get('lof_consequences') + self.header_file = kwargs.get('header_file') self.outdir = kwargs.get('outdir') - self.info_header = kwargs.get('info_header') super().__init__() @abstractmethod diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py index d180060..6c32572 100644 --- a/annotate/annotate_cmd.py +++ b/annotate/annotate_cmd.py @@ -5,12 +5,14 @@ import pkg_resources import logging.config +# loda config and reference files.... configdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config/') -header_info = configdir + 'info.txt' +header_info = configdir + 'vcf_info.txt' log_config = configdir + 'logging.conf' genome_tab = configdir + 'genome.tab.gz' -drv_gene= configdir + 'drv_genes.txt' -drv_mut= configdir + 'drv_mutation.tab.gz' +drv_gene = configdir + 'driver_genes.txt' +drv_mut = configdir + 'driver_mutations.tsv.gz' +lof_consq = configdir + 'lof_consequences.txt' logging.config.fileConfig(log_config) log = logging.getLogger(__name__) @@ -20,28 +22,38 @@ def main(): usage = "\n %prog [options] -vcf test.vcf -mut mut.tsv.gz -gene gene_names.txt -hl vcf_header.txt " - optParser = argparse.ArgumentParser(prog='annotateVcf', formatter_class=argparse.ArgumentDefaultsHelpFormatter)) + optParser = argparse.ArgumentParser(prog='annotateVcf', + formatter_class=argparse.ArgumentDefaultsHelpFormatter) optional = optParser._action_groups.pop() required = optParser.add_argument_group('required arguments') required.add_argument("-vcf", "--vcf_file", type=str, dest="vcf_file", required=True, default=None, help="vcf_file to annotate") - optional.add_argument("-muts", "--driver_mutations", type=str, dest="driver_mutations", required=True, - default=drv_mut, help="tab separated driver mutation input file (Bgzip-compressed and tabix-indexed file with annotations), see http://samtools.github.io/bcftools/bcftools.html#annotate") + optional.add_argument("-dm", "--driver_mutations", type=str, dest="driver_mutations", required=False, + default=drv_mut, help='tab separated driver mutation input file \ + (Bgzip-compressed and tabix-indexed file with annotations), \ + see http://samtools.github.io/bcftools/bcftools.html#annotate') - optional.add_argument("-genes", "--driver_genes", type=str, dest="driver_genes", required=True, + optional.add_argument("-dg", "--driver_genes", type=str, dest="driver_genes", required=False, default=drv_gene, help=" file containing list of driver genes, one per line") - optional.add_argument("-gl", "--genomic_loc", type=str, dest="genomic_loc", required=True, - default=genome_tab, help=" tab separated file containing genomic locations, created from genome indedx file") + optional.add_argument("-gl", "--genomic_loc", type=str, dest="genomic_loc", required=False, + default=genome_tab, help=" tab separated file containing genomic locations, \ + created from genome indedx file") - optional.add_argument("-ih", "--info_header", type=str, dest="info_header", required=True, + optional.add_argument("-hf", "--header_file", type=str, dest="header_file", required=False, default=header_info, - help=" VCF INFO header field file, refer http://samtools.github.io/bcftools/bcftools.html#annotate") + help="VCF header INFO file, \ + refer http://samtools.github.io/bcftools/bcftools.html#annotate") + + optional.add_argument("-lof", "--lof_consequences", type=str, dest="lof_consequences", required=False, + default=lof_consq, help="file containing list of consequences to be considered under \ + loss of function category") + + optional.add_argument("-o", "--outdir", type=str, dest="outdir", + default=None, help="path to output directory") - optional.add_argument("-o", "--outfile", type=str, dest="outfile", - default=None, help="path to outfile file, STOUT if not provided") optional.add_argument("-v", "--version", action='version', version='%(prog)s ' + version) optional.add_argument("-q", "--quiet", action="store_false", dest="verbose", required=False, default=True) @@ -52,11 +64,11 @@ def main(): sys.exit(1) opts = optParser.parse_args() if not opts.vcf_file: - sys.exit('\nERROR Arguments required\n\tPlease run: annotate_vcf.py --help\n') + sys.exit('\nERROR Arguments required\n\tPlease run: annotateVcf --help\n') print("Annotating VCF files") # vars function returns __dict__ of Namespace instance - myannotate=AnnotateVcf(**vars(opts)) - myannotate.run_analysis() + annotater=AnnotateVcf(**vars(opts)) + annotater.run_analysis() if __name__ == '__main__': main() diff --git a/annotate/annotate_vcf.py b/annotate/annotate_vcf.py deleted file mode 100644 index 7f85fe3..0000000 --- a/annotate/annotate_vcf.py +++ /dev/null @@ -1,180 +0,0 @@ -import os -import sys -import argparse -import itertools -import logging -from subprocess import Popen, PIPE, STDOUT - -logging.basicConfig(filename='example.log',level=logging.DEBUG) - -version = "1.0.0" - -""" - This script annotate vcf file using bcftools annotate functionality and custom python code... - -""" - -# print data frame - -BCFTOOLS_ALL_PASS_CMD='bcftools view -f PASS {} | bgzip -c >{} && tabix -p vcf {}' - -BCFTOOLS_GENE_CMD='bcftools view -f PASS {} | bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ - '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV >{}' - -BCFTOOLS_MUT_CMD='bcftools view -f PASS {} | ' \ - 'bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV |' \ - 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -p vcf {}' - -BGZIP_TABIX_CMD='cat {} | bgzip -c > {} && tabix -p vcf {}' - -BCFTOOLS_CONCAT_VCF='bcftools concat -a --rm-dups all {} {} {} | bgzip -c >{} && tabix -p vcf {}' - -def merge_files(**opt): - """ - :param opt: extension of file containing vaf values, vaf_cutoff - :return: - """ - vcf_file = opt['vcf_file'].strip() - driver_mut_file = opt['driver_mutations'].strip() - driver_gene_file = opt['driver_genes'] - genome_loc = opt['genomic_loc'] - info_header = opt['info_header'] - with open(driver_gene_file) as f: - driver_gene_annot_list=f.read().splitlines() - run_bcftools(vcf_file,driver_mut_file,driver_gene_annot_list,genome_loc,info_header) - - return - -def run_bcftools(vcf_file, driver_mut_file, driver_gene_annot_list, genome_loc, info_header): - """ - :param count_file: - :return: - """ - global BCFTOOLS_GENE_CMD - global BCFTOOLS_MUT_CMD - - (out_file_name_no_ext,file_ext)=_get_file_metadata(vcf_file) - vcf_out_mut=out_file_name_no_ext+'.mut'+file_ext - cmd = BCFTOOLS_MUT_CMD.format(vcf_file, driver_mut_file, info_header, - vcf_out_mut, vcf_out_mut) - run_command(cmd) - - vcf_out_gene = out_file_name_no_ext + '.gene.vcf' - cmd = BCFTOOLS_GENE_CMD.format(vcf_file, genome_loc, info_header, - vcf_out_gene) - - run_command(cmd) - - vcf_out_gene_filtered = filter_lof_genes(vcf_out_gene, driver_gene_annot_list, out_file_name_no_ext) - vcf_out_pass=out_file_name_no_ext+'.pass'+file_ext - cmd=BCFTOOLS_ALL_PASS_CMD.format(vcf_file,vcf_out_pass,vcf_out_pass) - - run_command(cmd) - # merge all files in order mut, gene and pass - drv_annot_outfile = out_file_name_no_ext + '.drv' + file_ext - cmd=BCFTOOLS_CONCAT_VCF.format(vcf_out_mut, vcf_out_gene_filtered, vcf_out_pass, drv_annot_outfile, drv_annot_outfile ) - - run_command(cmd) - - return None - -def filter_lof_genes(vcf_out_gene, driver_gene_annot_list, out_file_name_no_ext): - filtered_outfile=out_file_name_no_ext+'.gene.filtered.vcf' - fh = open(filtered_outfile,"w") - with open(vcf_out_gene) as gene_f: - for line in gene_f.readlines(): - #write headwr lines - if line.startswith('#'): - fh.write(line) - else: - gene=(line.split(';VD=')[1]).split('|')[0] - #write matching LoF genes with LoF effect.... - if gene in driver_gene_annot_list: - fh.write(line) - fh.close() - filtered_outfile_gzip=filtered_outfile+'.gz' - cmd=BGZIP_TABIX_CMD.format(filtered_outfile, filtered_outfile_gzip, filtered_outfile_gzip, ) - run_command(cmd) - return filtered_outfile_gzip - - -def _get_file_metadata(full_file_name): - """ - takes file path as input and gives its path and processed extension - # If there are two extensions adds second extensions as prefix - """ - (_, name) = os.path.split(full_file_name) - (name_no_ext, first_ext) = os.path.splitext(name) - (name_no_ext2, second_ext) = os.path.splitext(name_no_ext) - first_ext = second_ext + first_ext - return name_no_ext2, first_ext - -def run_command(cmd): - """ - : runs external command - :param cmd: - :return: command output - """ - """ runs command in a shell, returns stdout and exit code""" - if not len(cmd): - raise ValueError("Must supply at least one argument") - try: - # To capture standard error in the result, use stderr=subprocess.STDOUT: - cmd_obj = Popen(cmd, stdin=None, stdout=PIPE, stderr=PIPE, - shell=True, universal_newlines=True, bufsize=-1, - close_fds=True, executable='/bin/bash') - logging.info("running command:{}".format(cmd)) - (out, error) = cmd_obj.communicate() - exit_code = cmd_obj.returncode - if (exit_code == 0): - logging.info("bcftools run successfully") - else: - logging.debug("Error: bcftools exited with non zero exit status, please check log file more details") - logging.error("OUT:{}:Error:{}:Exit:{}".format(out, error, exit_code)) - return 0 - except OSError as oe: - logging.error("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) - sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) - -def main(): - usage = "\n %prog [options] -vcf test.vcf -mut mut.tsv.gz -gene gene_names.txt -hl vcf_header.txt " - - optParser = argparse.ArgumentParser(prog='jaccard_index') - optional = optParser._action_groups.pop() - required = optParser.add_argument_group('required arguments') - - required.add_argument("-vcf", "--vcf_file", type=str, dest="vcf_file", required=True, - default=None, help="vcf_file to annotate") - - required.add_argument("-muts", "--driver_mutations", type=str, dest="driver_mutations", required=True, - default=None, help="tab separated driver mutation input file (Bgzip-compressed and tabix-indexed file with annotations), see http://samtools.github.io/bcftools/bcftools.html#annotate") - - required.add_argument("-genes", "--driver_genes", type=str, dest="driver_genes", required=True, - default=None, help=" file containing list of driver genes, one per line") - - required.add_argument("-gl", "--genomic_loc", type=str, dest="genomic_loc", required=True, - default=None, help=" tab separated file containing genomic locations, created from genome indedx file") - - required.add_argument("-ih", "--info_header", type=str, dest="info_header", required=True, - default=None, - help=" VCF INFO header field file, refer http://samtools.github.io/bcftools/bcftools.html#annotate") - - optional.add_argument("-o", "--outfile", type=str, dest="outfile", - default=None, help="path to outfile file, STOUT if not provided") - - optional.add_argument("-v", "--version", action='version', version='%(prog)s ' + version) - optional.add_argument("-q", "--quiet", action="store_false", dest="verbose", required=False, default=True) - - optParser._action_groups.append(optional) - if len(sys.argv) == 0: - optParser.print_help() - sys.exit(1) - opts = optParser.parse_args() - if not opts.vcf_file: - sys.exit('\nERROR Arguments required\n\tPlease run: annotate_vcf.py --help\n') - print("Annotating VCF files") - # vars function returns __dict__ of Namespace instance - merge_files(**vars(opts)) - -if __name__ == "__main__": - main() diff --git a/annotate/config/driver_genes.txt b/annotate/config/driver_genes.txt new file mode 100644 index 0000000..0c2b75d --- /dev/null +++ b/annotate/config/driver_genes.txt @@ -0,0 +1,458 @@ +AKT3 +ARHGAP5 +ARHGEF10 +AJUBA +ASXL2 +ATF7IP +ATR +B2M +BRD7 +CDKN2C +ARHGEF10L +ARID2 +ATG7 +CTCF +CYLD +DAZAP1 +EPHA2 +ERCC2 +FUBP1 +KEAP1 +KLF5 +KMT2B +MAP2K4 +MAX +NF1 +NIPBL +PIK3R1 +PRKAR1A +PTMA +PTPRC +RHOA +RPS6KA3 +RXRA +SMARCB1 +STK11 +TBX3 +TGIF1 +USP9X +WT1 +ACVR2A +BCL2L12 +BIRC6 +BTK +CASZ1 +CCR7 +CD58 +CIITA +CMTR2 +CYP2C8 +CDC73 +CDH1 +CDK12 +CDKN1A +CDKN1B +CDKN2A +CEBPA +CHD2 +CNOT3 +CR1 +CREBBP +ACVR1 +ARHGAP26 +ARHGAP35 +ARID1A +ARID1B +ASXL1 +ATM +ATRX +AXIN1 +AXIN2 +BAP1 +BARD1 +BAX +BCL10 +BCOR +BIRC3 +BLM +BMPR2 +BRCA1 +BRCA2 +BRIP1 +BUB1B +CASP8 +CBFB +CBLB +CBLC +CUL3 +CUX1 +DAXX +DCC +DDB2 +DDX3X +DICER1 +DNM2 +DNMT3A +EFTUD2 +EIF1AX +ELF4 +EP300 +ERBB4 +ERCC3 +ERCC4 +ESR1 +ETNK1 +EXT1 +EXT2 +EZH2 +FAM46C +FANCA +FANCC +FANCD2 +FANCE +FANCF +FANCG +FAT1 +FBXO11 +FBXW7 +FLCN +FLT4 +FN1 +FOXA1 +FOXL2 +FUS +GATA1 +GNA13 +GPC3 +HERC2 +HNF1A +IKBKB +IKZF3 +IRF1 +IRF4 +JAK2 +KDM5C +KDM6A +KLF4 +KLF6 +MARK2 +MEN1 +MGA +MKL1 +MLH1 +KMT2D +KMT2C +MSH2 +MSH6 +MUTYH +MYH9 +NCOR1 +NDRG1 +NF2 +NFKBIE +NPM1 +NTRK1 +PABPC1 +PALB2 +PAX5 +PBRM1 +PHF6 +PHOX2B +PMS2 +POLE +POT1 +PPARG +PRDM1 +PRF1 +PTCH1 +PTPRB +RAD21 +RB1 +RBM10 +RECQL4 +RNF6 +RPL10 +RPL5 +RUNX1 +SBDS +SDHA +SDHAF2 +SDHB +SDHC +SDHD +SFPQ +SGK1 +SMAD3 +TMEM127 +TNFAIP3 +TNFRSF14 +TRAF3 +TRAF7 +TRRAP +TSC2 +VHL +WRN +XPA +ZFP36L1 +CD274 +ARHGEF12 +ARNT +SMAD4 +SMARCA1 +SMARCA4 +SMARCD1 +SOCS1 +SOX9 +SPOP +SUFU +SUZ12 +TBL1XR1 +TET2 +CDX2 +CLTCL1 +CNBP +CREB3L1 +TPM3 +TRIM24 +ZNF331 +DGCR8 +DIS3 +DOT1L +DTX1 +DUSP16 +EGR2 +EHD2 +ELF3 +ELN +ENPEP +EPHA3 +EPHA7 +ETV6 +FAM174B +FAM186A +FAS +FAT3 +FBN2 +FOXD4L1 +FOXO1 +GMPS +HLA-B +HSPG2 +HTRA2 +ID3 +IFNAR1 +IFNGR1 +IKZF1 +INO80 +IRAK1 +JAK1 +KDM3B +KLHL36 +KLHL6 +LOX +LPAR4 +LRP1B +MAP2 +MAP2K7 +MAP3K1 +MB21D2 +MCM3AP +MED12 +MEF2B +NBEA +NCOR2 +NEFH +NFKBIA +NKX2-1 +NOTCH1 +NPEPPS +NPRL2 +NRP1 +NT5C3A +PARP4 +PCDH17 +PCMTD1 +PDPR +POU2F2 +PPM1D +PPP3CA +PRDM2 +PRKCD +PRKD2 +PRR14 +PTEN +PTPN14 +PTPN6 +RASA1 +RBM38 +RGPD3 +RGS7 +RHPN2 +RIPK1 +RNF43 +RPS3A +RSPH10B2 +SETD1B +SH2B3 +SIRPA +SOX21 +SP140 +SPEN +STAT5B +TCIRG1 +TEC +TFAP4 +TNC +TSC1 +UBE2A +EML4 +ETV4 +FOXO3 +HOXD13 +KAT6A +MALT1 +MSI2 +NFKB2 +PIM1 +PTPRK +SLC45A3 +NFE2L2 +HLA-A +CIC +ZNRF3 +PPP6C +GATA3 +STAG2 +CHEK2 +USP44 +WDR45 +WNK2 +WNK4 +ZCRB1 +ZEB1 +ZFHX3 +ZFX +ZNF165 +ZNF208 +ZNF429 +ZNF626 +ZNF680 +ZNF721 +ZNF93 +ZXDB +CLTC +APC +ATP1A1 +BMPR1A +CBL +ERCC5 +AMER1 +FH +FOXA2 +GNAI2 +ING1 +KAT6B +KMT2A +NBN +NOTCH2 +PER1 +PPP2R1A +RASA2 +RPL22 +TERT +SMARCE1 +STAT3 +BCL11B +ABI1 +AFF3 +APOBEC3B +ATP2B3 +BCL9L +BCORL1 +BTG1 +CACNA1D +CAMTA1 +CARS +CBFA2T3 +CCDC6 +CCNB1IP1 +CDH11 +CLIP1 +CRTC1 +DDX10 +DDX6 +DNAJB1 +DROSHA +EBF1 +EIF3E +ELL +EPAS1 +EPS15 +FAT4 +FES +FHIT +FOXO4 +GRIN2A +HOXA11 +HOXA9 +IRS4 +KNL1 +LATS1 +LATS2 +LEF1 +LRIG3 +LZTR1 +MAF +MAML2 +MAP3K13 +MLF1 +MSN +MYO5A +NAB2 +NCOA1 +NCOA4 +NFATC2 +NIN +NONO +NRG1 +PATZ1 +PML +POLD1 +POLQ +PTK6 +PTPN13 +PTPRT +QKI +RABEP1 +RAD51B +RANBP2 +RBM15 +RHOH +RMI2 +RSPO2 +RUNX1T1 +SDC4 +SETD2 +SFRP4 +SIX1 +SLC34A2 +SMAD2 +STIL +STRN +TAF15 +TCF3 +TET1 +TFG +TGFBR2 +TOP1 +TP53 +TP63 +TRIM33 +UBR5 +USP8 +WAS +WIF1 +XPC +YWHAE +ZBTB16 +ZRSR2 diff --git a/annotate/config/driver_mutations.tsv.gz b/annotate/config/driver_mutations.tsv.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e0135dae03aa91eaf2f577c852c3d4a59670b41 GIT binary patch literal 171415 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 z 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ʢOWgZ(|F*af)m4N_5`h!U2<2ZZ@<&ZB-@la;P zz{S1o5UbZ^oEOn#JBoRcE36lB;lL_F>0Tp0%hs~jD6zH@@muROs$8~y8h;Q;6lZnw zMYIqwmqVn_!iZIxQs=o_&ti+7AI4r}9TzPbB`%B6VvEU%EtVs5Jl8R%8*$HdTz_pu z`^8*$#2a-g8>d!>SF2-a*WSdcD}@ktJt%RZ%&g%Mb1}ZaB9ARbh0E}xyb&A7@Ew;h zjUuZs7{`N{ixcicN{0$fH0{Z5Q=_q^SRcd_U9S`yv9UO8kV;)4CQtBnOLo|0VPNU44I*fZxT*NvKj3XSP?KiDWK_l8QaR+ca zUM@gEz0L`k={GvmN63!oJa_d2dXr^&rwqU~4B|&B<3AMxFG_4=U!@*-sg}Q^qkbqN*7VMP5e*-@-IXEVhC#Wg4-z zxZXKBMB~Dxe23VG(bxUjN|Cmmjvw%is4sdc^$@MeG37zTs1VgiAw7ttD7HOXgV<;d zn~o|V=82K9q<0lVk{4$^(w|Tj5>9%7`1N+OReUJAzDN0Y>v_7s+JG&+*d5QH{DC_XBEzY zAEGrhaT$tIbmGbL#C$JvrnU(XkE_h7R0Auc*lM`w z8ZKUR>j6-S`9dbBTo2Lw<5!tOtnJ{zdl+@**SIcvG-566RrS8F#k~=%^fvbymk?rk zY4r4K=664&@(}L(2aJ+0Y=?#`M3pYe&&Qiyg=@*IRJl-|hEqM%T_Ki$N`(viy8p$< z7tVIbDK)+jUN3q&9P%P<1uaX-DL0;}!bMy-OAUvdO6)iva%ghlh)v7A$teylCCZ1K z;*5;btVS%C_*_T9Ws^o%*ZcDGr*AIV#3P8&U^2|751L$tkyzT0tjYaW;<$;*QpksRNekXEHKJXicU(zhL}TlH&U}c= z2JXNzqD2s6jEAU0#F!4r;QYSFh)ruA1|&Xg7ti z9-?l;iJ*9hy6sg)N(y5+MB6xw529^cj4>Rd-4w=l$njfC>5${MmQP8u=a7C9?KDwb zZ1Nyl(pm6>o6*zm)00p-z*;&Va)j7Vc+mTVrKhZ)-;`KsVJr_~#Smi+@sJZ+&E*hl zB`}t0RA~`pI#8E@NGnOR>|Kvd_vXm=U;p7!mDZ=xxb{X~RJb?aXwbO2rC2&ov8C{! zNmMn->h(}(DlB@8?&F`&s)Bc=9(1*#54w7YrrGhzqEdceO56?**UYi${s_Qdf1jRY zI5MV`xoj^%Hg!j~77d%4BU_zs(fx4sLDo-foyLZzzIuq}O^oe9(~-@1h&n_b9oPK5 z>6(aMWb5dU5if$Q#p5BKD26Mer;l*G$gEC5PHZzhh&!a<)@dW!knn?LI#j5vhA@mG zt@?H1{rFD;@5p_tyWu!*Dq%f94w1uQOVmm|= z&1pR-E4{CUisRY1q21_wMd14%eo9|mD!iR{=-RjVs6%(&bZ;TQ=wwjFg7MHj48ADW z3%f>*$Jo}iaL9>qtfOp7PK*QhHYp{iECV~kM#IzPbf|bbJVPs8E%}2Er)-R>6W?0! zDe<~1xG3$A=NEiT$HAo}ORkw~}8nG5FwtiHd*M>~} z@j<+_HQ|$FM%;Tft)KP|@pfAGkEcqGUrMkT*MT{%i`qlh?T4Pu{8w;|KG)&LW+Ps| z_#S9HLD*aTqokoqf1+mVdR0HpueSJ^L$SHBNHKUNTW)xM3hj^Rm z>(WajzAnPO2v*)%obvWye(AyUOAp%TKu&q_Gn0|i=Wr-5A9Bjk*R#r|>iDm(-@uie zcF>#ETW?;yb$rCn$je{T^)bk4r|Tj-BQM>N+aWK$dE%RHeCrUZ5+9@c964X)^vr4N zi9Wsc#0WuWFA&e6ShXd9xTnS19>i-{tYa8W-eRz;Uk`E5j1YB&2lC1r)3}Ixa0Gik z1bH#ysH~Bf!Ub2~u#U1+I^ADrHxv>!-0kWb5cgI^^YV9{)|x ze+l>8C{|GWGeT!~gw7#6$VoQ`Ykxvc{bt-OZshdK^;BWxq+6@5 zi9k+#Vx30AY0tIVxLcp@3HzXH!QyMqo{d=bxnYwtGxXG^QFme#YdYk3dfg&x9=Yw6r zdJ~tpm!)beu;19H`Vg>BEm+?#NWMSsJY)GRdG_i^!#H`T6P28DGXLs?y@jPzPrF*- zMQ1=k^dP3U&v>(WrRI_feh5g@JJ>|g`aPa=rO+YKdH-8baqPttQ1?f8ifyb|LpJYu zMJXyBc<&aOK>45kjacUbu24166%WB?^O_QJOsgR(CNjy@D{|-C;v7{C>B3mdz-2Dm zPYHuJn}!!~H%-QvUQGj2olgba13)CQY`1ct?26kK^*NoAZWHzLvCkzkUE{D<3$v{~ z8`GJ6X}+n)eplePbpEMiH5ZxruCVJnanZil$3@tP?B&r~H}F?Bw}cPxdrD za{*aPwqSSSE8!1X4-H4uPY5)NgmY8|QzpW6&H+l{;3L7ry;I`hnGJ%A&c8nA&nsF{ zzRLe}K4G)hX{|-oU4canDL#MRtrDwz)@=Wwd+8My>3-qDw#!UgchZSaSS7NzQ0DUS zPCnlGA7n+cG2ZwLtB@|-eabDyN*BB053GwaX5GQoU)wdMd$u#zSh z!ss~pvqy4$j*IfFIe(w=j_+2obE5W8qH{vv){N1!+d_ZQIWk?l@|jPU&LCOPjR*SM zBvsqGhI!G2x&G}@?1A&^sK}-#G~x2iYU>E*HFw9ysVD9R!Q0%T_e+Zl!aGF0P&)HZ ztfKhNy(QsLJTDQj&Ba+0q?ku9bg%lg_H z+V^IsRU2gVO5qeoFfNwGJR4=5%5fj3<3?rR-{_@WdswIAr21$2BfM*TKJ$#mJ>3F= zt==O-&tKX9IZ<_nD~3h2sbi2q_Jsp&|L(IL@hDVr}hutV?Tm*qfWi+f7;j z;-(Y*i>F(VRNLNm{oArvUJwy*85Kg4LKnD@$m{V^N~I5r6Xbbz%nR(~NuCe!VJ~t} zIBiweHr63qkN#Neqw1yOBvNjYid3q+389;s{leO7Mx3FE{;PCny+7P{ZC{ec_7QmD z%KFZu%}1WklwG?ry#---C+CBLI%}|gnehC*;9=YzXh+q9#k%z^aOH6$UOY0#^4&2l zgh>@7ZViVNRldUg7P$t1*MPsEdsRt5^{^dn*k(I$YFR?vtKvJC;hyaZ$+;#{z{`t$ zrz8)_{6k@QjQ~SvzvO2^TBiOe3dEm!c3$69eqBfk@96V}4oOzHp~<+k^0=#q{`tmb z!xJj@jek%NLrdP>Ur(P(?IS%i;_ek2vk!UL|Ux7P6a;?V)mA)j11@=IVfUeY@{m_3oRl}MF! zjdy9pVGmWLd4Kx$27@ce{BF+p@*MRkkZzdrD+Dv%^I=H!T&oUfCa6LXlaSGAA#qqL zR2KZ-@(!?!UA0dM#(R^L8G!k9+=7OAHS&0!-2P(>knqW~>9b$ef)PROXNS*9B27x^ zsCf_%F;e8ui1~5A4`_3kh7kI&B+Dp$=1IX~O{6lry*?fJvOu0=~gA8d! z%{}zEEVFO!{4EAm+5$J*ufPP>80)G8KQkv7bL9B#3{$|!+|0gwXb8o9@2o9OTzU`f~B3cg2)r>1asVnYGM1`q_jGSIe$oO_U;8NjZiwjGH*NMIMxo6Z-$mMW@d{DhS0Cfepk_ACcpK5v_R6YT z48K@r??x-pHKS3lFmUja$$-v7Z&$)&%ryS{|U(kU)sx^=7$xM&7%Z>D8hi z9PeV%*m^zg2&dHE&W63-Yl(II4TeiDt}gM7;aZ*cG0;Ln_z&#A{I2-e7j$n=$WuCU zq(g{7&2FqDKs>z~UPmG?T@s*0!BGGu4S_pr^51Uy5GK{x)I5l1bqWL3{suoAyWI`^ zU5To=P;m#^>+}DlK(`W(=f7456-&nQdt$*)KlSyUS#VhSkS*ac;a2yPfk>FF^;>_m zQ(d4%7xjB0huY|5KA>I~K}qDHIyH36v`}$YVmIluLKw8Kw&Eh_v?*NYFE}qu7N|2|Uqj8=FgM3YP z4@nVM>38jPhE}|YQiRlTLl4V5#^ID}N`n$^$n#5nKXdd^)~V93a~3G?`S$GYTkz%c z&`#~ye+@dS*!d`0FssUYW*amyJ8`-i1LRiVTr#@s{>ii{(XZr)`ha(1_(i>aK1qSZBNo1}WOL9w`?1)RUqoGuZ0hCW;@`$MQsmq;$ADcZxr2norP~kgepaYHPQ|FkhC^F6MxO7*<1AnDEY( z^t#5VyLoCj$cP+ZB&RoX2_~tkTB~Eo+n%9GkNSVPLGYRi|HK*Pt4~;oaHZ)g_`~|Z zUS#0l;^j-5Qu$w~EyHh@qxVJWA4UE!(pEFgqT(@WR^_&Af8Dx)_B&ID{VQV`JTHj^ zuAqiiIHgU8KUXzkL5VTyi)WYBK1_Ahx3!uCaM=nWb8456Z9Fxnm7E1BU_kP~$38QDAh1*8o3ZD-!K#8~qiM*o!3lQbZ?@qU=-Uw>8au$n4 zYCMSKLDWmnG!`IF(uip-mcE8wc^{cfsYD73lX+qdAwy}$Z< zI=x`uaH3NNAe7j*b4yhH^Sm$?3i?S+8+jgX8N*?_iDW@NalfZs4BQ<-^-T_H%6&nG zuR8ch*xqAZw^Gz!1oA`QLUSE7_Sd*M6lvkdQsA!?0I}Dxei6&p2e(cqxW%m+NpD!NBoN46AOZi^4%3 zZ$04f3a(aG?=u4(i5GN%0?tjJ@G9=kLR2_7p^yNmBf+@qqm0P=G)BYzHKQdTVX@G3 zsAdz%E<4D%ss~?wvD>Ausg2}Z*HxrUqedTwX=C|V0(rUmS{Ew-?FM16+v1j;Wi2 z4-d79%1@)5a2l8SD`I28bQ&nO!x3mzlT!z)N4wK!t6nwbrfl%ZF1J$xlrj8nT?C+6 z3I9=LI4!G#M%&QLK1y>x@JfqZ9`|!0JmO;LA`fC;(4lOsEvcdCYoe^~ z=hcvhv(mkALA|Kvo!q9tmy?7%Ht^7r6Rse*ie1UB73;DG%5lZ4POO>IHV0cV7f(N- zMh)?_3tcm1<9wyyrXl3#-1!v^KlR-E@E5PF#YG)2zv0tiuq`PrY7E+(6ql1ap#^T4 zl3d@IO2JHPadZldNt3C@5CR_~g+h@O6G-!+oog7qD#kN~qPAtc{{onmmA0qf)vX$l z7fK)DJNHlDfwbAC(Em%hYX?*Ae#dHRaV}XpF&rq5-dFwk&uz87P=;&uSOFUW(}dC) zS!24VN81dnzqvCH>DU2Y21z&{9?1QCzp8twkF_lJn-eQ=KU3FoVfzfiOD!s z*8&48EO>g$cMZ5J4eH2RTP%7(mAN*?p>XPSHTX#wUyqz8R&0(}wjD@%9^V!#V;S9w z%PR^gKtxvjYA}6e!)!$@^rYwY%<%1Is^{g|@a?Q859~j0Bbp~ssMAKoF)Nb=+w;H@ z;;MUtnKXf^^h`7&+pv+>u-8)H%YmUGSp5hn>bJfMMMT|m^%HJdz+#jyv%Z6)Y(DsI z2C$!YJ-6dfdGle*gzBL-K3!*z0#Jcd-UZN;-@>r)0+ zyNR+IAvsYcClhJ{t3kD~7jqUW>%0P*d&R zmN0CcHPPp>GJcXeMf!^4qc$Ud2B-4K1}6-NNLOf*1w!I2*pYZXRLucH<}nP4MuFY= zc31#T_Ni5j5d6;074f}%{K%HDVP~(o{;XKrn`Io@FrpJ3&JRBE2MYM)VaLpnZwMjR z`kO^WKOPAo?jI1E0xH84VDIx@(T8&QH)K`^h*@GcH6JM0VaNU$@30IFvDwlaPe%(` zWeIr%kQ&G#iRE>4Dp9au@0)n%U8z!n;xd}B2tLSqdM}wN_g^xRAeh2nC-763$8-KE zl8Pbw<_aa@gC#lS9tEMv#(T*Gd(|=4413jl;ufG~D4UET&KGp%=PMUQ8pLDaEBEdK zxMyGUt&+yeM{M!r>!qvjD%s)(*#7h)uuexdiu<~$7Q7>G=Uej^_vz?fL-h}12{OV# z9fAM}f`|6z0^mVnEh|P$ncRCaD@9DXdt6s)9O&e?wh1Bs&`aFar6i0UdA-)YYTj3~ zgm?v0RE9iJZ`xtcryuCYh*=$d#gmF2v!|;e{&sv?LJ$htWYa}QO?vgoz;~RFFAk*# zE;raavL+xJciuJf9nYv>brCBWqV+A@5a|oN?VN7CTu!DqE$-eT7R+t@{Q6)3Bh0%jbXOS1?pRjJzb)ADRwPtFBgC8a zlrUX|+v?TKhDZNV-P`_trTjO@2;Hf__=}q4)s~-z(|2)&%vDxu_NQhBGGwY})-xcLeR*N!Qh|2#isHC*^ z+nU5RHKz9aPrff0gl946(qGaJ=VVC^ zbesZx^H)0a?hINH-j2J3eJ)y`gXVLLtc0VwV(C%syF1kwV>ljmxF7BtQf!SiiM zY-d$kGAwKOiZm=p@Xzw#j49$tt(v=-B9Ih#)#I>K9tdRORQ~dhJ(>SB(VyvAj}z}U zp}`ii&^cx1ox?bCn(5kZhg7eZ6C%$tb&kM%C}T;;8InQR7MlfcobwN%%JVIVr=M#~ zQ2axmftUCF`488Q2me^31JZ9z0)1B&-k1=S=WQ`d2j35veW5<%inT#HU>v z>OEe>yVu_6#}-gZ?Yw{PBE$qN=EkVeR?L<4sr~|Eegv6ou`cPUP(v_Tj}$JkF&*E*Fn8h0>-mfdY`aI-cQ}}Nr;MZEF-|`sFA^OD9y)uOit&BL zGIXBjzg!1*9GmI!&v~4NAL1W(y@|K!)&Hv~zP3ioQf_G%lA~czFXgEzRw&6dTD>N2 zT}GJ%-D7F`8 zy;DHCZZA#O`6O;-qC7s)z`rA7DI7XN&m9?Q$*9QDs38+02TH8daHq23yRuWP{S#&B z8DhR#roD>4(^zHP_C>NFN3xH88INsBQL#3`_FGhTZLHjxBEP+!H?jM2an|`aihk{F z?Rp%x%BDnnSoAO3)H(O`n3&L%pc#%%#611`2mT!vH~mh>5K~|ckB3KyzyVJ5Nb0_2rHtz)LlG&i~U}X#EAzUBO4@2Pdzxh_O0Nz6hPl^|LGNh_SZe ze-fWH&fku({lx_0WaHDqvUfYDRGrO2r!vX*ogEBP zgOcJ$Y}jS+{`dZYZ{z)A_vwB2--1VNhNH2e)NAE-C13wn`%xvqj1lGyOX^Lx3JM+* zLh^$)n^cuJx0D>Gr^P}~d~*bVDF2O8hJtFvUZ@&GQ~% z(c1znmZeAB2T!F+5v0v}x5KScuS1-glh~${3>22)zjBco{%fk`zTae#US2-i^yzV9 zDR3k$;HKDaF4Cnq+ogW)Z}ek|YG#TmN~&!+i*$7=DAGR;o%p$+Le6Jt_RUb+`rFl9 z>JW6E`k;J5(HQpsDEOl^ZwU*;JFYO5Es!4ahFGGeROdnqDa&4*=T|E7Rk{7Hoqc}r zm!ZT>SN1bzL!FvkNf)FF_sGiU*G-J^<`_siWrUHXsQ#Ts6Ln7ezJR2pY#}Pp6ZK3x zy7^HO_ou~53?E%|S`mNKh-`@kF zVj)L`GLF3R>;)+hY1a#CZF8_7$T_ z>BN4jye`oFQz5AzOG39nOgiI#O$_}27}8!g*_m0?c&Xy`}b zR#{X!jjk&2fGjRcdMA5*!Tm+D%Day<-(&Gj4g~!^-a`kWoLDeC6*5xe z*To&QCd&#TrhcROg6O|-4@=gbs+GbNNHn@dqyt0p+3;4VDiwd6%o4NCGAfje$o>{` zh;EeMn>gV^q|>?4z5yZfD80yagCcuew%!k!5b2oSV8JHQLs(ZL{&S`I{|0-$U@V{O zq3;KXqiw7BA|j__Td_(0K#XWWt3da#{|YWV7bXcvs+8^7@XZL6`&kz? ze9rPu61|^ zSAw9{{8%p{-VU@`>OdM#cQN;E#ypUHOQ_vLs>YU^UjHWz0$MFhQB6;=kfq42pMlm>Y6N z;cnp(KG%Vj3pO1K6dgwVILR|j;J$XGTP~CkXI2AdjNQZAw$y7KnWj=Unkc^jzx64BPwc8F{tgc8 z$w~!@FCEznT_Ork_gRiNo`FYP$1%|MA7-}koCho$&NcN!vGbvF}laYU!drzY};! zrFOX6-i}&h`?UiqT!kFqGSham*Sp$#H5Y95h7s=?NAGls*+3Xq6(_u@Hb1R{+Bw*g zOD);td7Q^iGzdTCy`;R1K4>>Q`IlFn6fXPxT)kYaLALeb@M!Me$np9J?EF-Zx;dhYW)eGnd zh>SVeU1xT7RVlCj*k$fnU~^x}X1B1*7eCIi;hI{>2CaK``Q}~_cWAYupJ*d%y*1LR zuUx-YQ-NkPbDbi=wl+!mu*+ zQbSMrZ(|$f=O`eqv!-0b7$%S+xzW<$bQ6$UvvA8^$#x%g-2ho@tZ7OWZlKU3v%x2Tmy8p zbRZZqE^MIw{PHjSx#xmlA=MTh_roB+RX?Z(bW4d3g5?1T! zWQ9YfL;r2f-9%3Egp;r%a_ zV<`ubmA#p9Tj`DdH)j_;?1mzv&^|TGN9t6gWU=@#JEsfu?s1Kl^67x8iHiFUJ1vKc zz?e<*n_gm)fyNCkLhGMo@L};1YfHC`2-dpY8%9#~su&|!^MgvS&k;{LDs>fof6W19l0E1xtv8+%X!rp%m*~;j#07iVPz=> zu6Utk-FUVS2j1y-;AO3tiqVMvIww$Uug4UZ)~7i4pELZK=G<+|I#e8Weqh^P750`_ zypXY#eFcQDe4^%R$;EwLSMFe|`oJ3O)c0;;O)Aj4|L1Cn)CB|d!i=GAF-@uo=pSyK zo(GRDbF=c8Qtao1Hy|nZ+oC(_j1PC1R=3Upth4IU#n)I0m9y2dj;n19Ph0#T6`^|{ zHk+w|{+T6Q7yp~>S-}*!8Tg3xS=Eg6*9+CD==)tu&&yHX`(pyEUUCWs9lhPB2R@#< z8l2b&e2*5}IaVDJnfX{10@B|6CE(;J_yXe`-uEQ97sn>@jZ|Q_r%x@zie2NPGOA|6 z4a-SAp(bIE;w>jwVzZ3|72%psF6ra9U=it-m;JL3VMr3mHRxFDUzC&nO2{-+JE!j3 zz~V9$UbeQ@wibt#&YQkE*|Tp^xA|DI4&c(`kD_5CKOOzOr~8UO+x5r$(*mt@2x+y? zB~wa8FXExFZs5mJ5n)usnEj+gAZcVfocxmxHZ71)|L0^U@WG+Cp=>k`9@&L5`GEuz zoh7+qAB$Vr$3?527#r0Zmp2H-kVgD7CClp40fneXGL<=KJutf`a{rJRku+HdZ6`kh zDVJ7#s0>MzOU?plX3sY3$(VoZRAPDtEDLu{i`xUn%D2(`b`j?%>we}xMDG0{o$fh^ zsgAu!xLQ2a9dqSc7pq-Pluu8Wu0q)R)JQ!#35d9*6}L{lFvH|l&)c8-&qh>~TTYlP z91yL@mOFwp@~Z)s^p^FQ`rL^ws>BwMLlG41b?@D74L7Z@lxo)V4K8|!6Cw(Ht@&>> zh8bDZRqHs1jwpzjF5vppaPZW|FH)LxxD!$Dr|YX{$L=<;YA9B!D4kLh*NnQR>gNS8)Fv0ecHn)&3S> z71!=qu4)BRl#R-Sqe=TG42FrdQ`b6RUY+f;`(Q*Md>wvUMX3lNf)@=OO38f;AWPg> z)%n+4Agc6k7I-6aBe8I>-34z7-lS{a>85*?Y@(nPP%f}B94MWxwfUFXT!6r&@Jc!b z!OsKxYM5T$zF$?rvJ*cu%HytHr!pP|$Ajy=oO_+m_heCVRs!Q*iimnub#goK9D{gu zZBym3dKpRThyAu6J11kHZourfy1aZrfGtuL;{+nV`Lm%lqPTN?r5ZUvLU$AL6}9(i z#FjA|9W`DpK9Ff%#vM*E!*2E~<-9vk3u)Z-fsN$DVMF=~x{-ouThVVLqcow^%IVPC zgn-qjU{O9*PAiT@PDOT@<)_ieRxN5$ba?*_BZOf=zKw9(?Tn-p*NO2gtCX~s^$?b_ zeG&gDoR_6htd$!=I;9#^4Hsd{*>T}>wgY<9Xc6O zWabZ&Sjz*FTh)?9TJi<4Iwr2eLxWW54Ke5g0J0fg7c&k(DA{$eF%?j~W6*WYP9m|s zE7amrz}z+pq_MmNByazB^?VVq1pS>v$^U#XV3e5!W#_lm1DMDrm)Q#)Q`MoJ_vdy;UJ})ma_h- z`gbqB{ri^5ZxD<3?2vU~t%me8ySNA5Ru(*&z{ZwbH`I&p?gyAgpdgbf&)$+jonUQQ ziO9jnXYBI3WY_*bb+OpSo(NuXPPQKHY~?7|jU_ZtLA_p+BRb@f8Jwp!)uhz@A?&VF z-1zMCA6X84dqe#FA19a>KoqI6i=Ae6QBCnKS&<6}i0br#$&itRDkjHqFpgNYZsJ24 z@d>Nok~2=dq@~RY$^xhN8vPfsw9e`MeTs~)wmJ%fY~?Y z1yyJ91JIIPdo&R2NIIeA4R~n!4VN1+Tux-8>@3}4*PoLYTNJJr?`h;v?LgRbVs4Ku|Y zF2tAST!BH;fN@f^h2lSr=>D}SD3ftVq@!!}^|*QtD7wYBQ)!8y^Y~ENr#(u!Bn4b6{@%{*OCln#_eT*nhZB7I<-UJUWHraH5wm8S0IyGcTL-$$HSe04GR@)N z%O7Mly8=_b-+)a>S5q$zQ)Ovg+eIk6Qqp$k;kD0TQr4sHfOBj~E{5n?sa#%IvyXsg z>pi9?Q7*+b#V9RsW`HWpgh-?Vdk#o)!#e~ULYW6&zyUCGWD``z$GEOcZh;RJ!%TcqZUQPP@Zl#%P= zQbrp0m{gXok9hXZ=2${(HC$S-P-d7Gl3!aYEm$N|6?m%hzSy;QqB6YD1$SQt7Y&*F zU~>_Gq>m!4^8i$kQZgC)7t8AVw{uoGQEJa8Fq7jrZA{-Mc7_UTIQJ%W`t(2vf~jgUNMPsr0(IL?bJj% zInnV!T9CL7hfS@mYXl{|T+et9_nYhriqh@VGFCE~iIx@(-Pz6$qt!(&bzgoetq4tA>Y4_B2Fv-s&*p&0D#^JT6_g6`8fng!+p<%yz; zKqAaEWr4uf!UF4aL#dQqKP2Eyp;cpRuw3j*^(eyy-C6;rgx<~RD?|DmkFIwb+fDWe z9}nr_iS2#JA$GNhiv$!E%XkMhD#vMowW)ayGtI~&TIjN6ZL;+F+v=2ve~Kf~#qoN9 zZ{WT5;*H`?0i47sWR;wnrAR%8TH72#sal`y(e4|`u%g!x>fh8c^O`VHaruJ*ft4Zm zx$sQ_XZ%m~1Qn)P6F(1Vywea@@P|BgMBDwP&5s-CMG2`*!F0U}|A^G_#&H1sr2_Ae zB>(DIDjVt#e{}}+5(}NX2EmV&%z{4&cdVi;ocjlx*$=q;-NXKrP8WO{vGD9KxLWZN z_#v@p5TP=#;Gf5$agt=Gv>2Cvus=rRasm>11XzGnLT0Klow*?pcH7Oc{U1fFXKun- zNKghBE;d61SLSE=(emv}9U>__4|BQ%AvV-PvJ(C#%FfIjCa!2NUIt8Y({yLrEVis* zJ9@}-M+Betv0|+PixR75LB8I>0B%vQLrMyco$+(SYmAfg!q^6iW#OVqw$sV|?HM+M zoq!3M_YWfi`rQ5b&}kiyesDPfSw5z5%IyvJ1{JqR(iAt2{*M6?{SMBy?N3rHe9IRi zH>tU~QLpD0-LJ>rTcvX)lpNuDP^Ww|vd#lp4Sv{~cfOZ=aogIurl08CiWK}&WFTDG z`CvQ`U+^M#h>P~H?Nauw|0Zvs^jRc=Z|85vHASWtXsPlbCO4NbAgP*ZKoJ-Q3&JsX z{6OB`a08*}3HVtz_sVwHAg}n1AF;lZ;^fP3j@b-P9DeR3mWS7^{etJh8NLh)u@9wH z`~FB`QTY>d9)H1cbBpifs@b<6sbBOTs3Nink@qFrwC}IVh5%9+&!V zZG#1eND0DbS31Kx_h z*bb647uL;*xF#ruA^$#&U85+TA>$qYfGiPC`UDpmIfYOaIa5g4Z`-=rayphApEuIw zROj~&SS8AYJL^h0QosLR{%o&syI-<$gPMBiD#w@RkE?ZY$5ekf;!HgtL@1U}MdSI; z0%1swN7|zjDn<62r1w38Nr}R7q>!W>pHwN?MW6~QJ>RZ98B@t~Oq-`M*$N|*t>A?@ z1*!yXh444yGphO_$@%_?Th$!UC(J)E&QCrryO7$f`D?O(w7o^14qvnn>UmnWPwG%Z zk2C0mV#%gmANQ{9RS3}!#O1w3p#j=?EEc-4j58MU&wXK=uoz7mn2}2Njwp=gwP8|J z2_>`K+fn{Cl-Z%i9fa;(Yfvtw7OqkOsgnxhhw>~-(v3`za>s^v6OT6S9u(&5jO6UB zF#gTe{AlwkfE$)!Pfv+!2D*sxj0?H`DSfK9yo=pr`Vn>2q`Le|Tt49qQ?ju-O%dPj zKCXFbod-}{EGHFt*)dvPk=Gm>)raSbT#9ZCb73YY1SzT9T2~0SG}#?Wiz}bD$V5vA z8Tt7>EhdVK*pg9sB{F9ajL;+jJ|Z7s6;Idb?3_XpQt6r-W;=HhQ3tSqgI(40b~ znP;a=XJQD%dB{3jXW>bv50LpFnIdIuAyuttOf`18FJ;_BI5?-Z$IS~d3bhp3J+S`g zOl;{9?X&r{>gY_#FeBiT;6a(v>Cx6Ni9U5-?8>MGf zij~dsjco-BjFMaN2S4lMT12=VWIWjFiS66DyNoPtc_iH;=NyIat^b=^z>EX+8dRwL zI&}cf{Us&#`zvIx!mR{5?am?4m7Y=ZpYgB|JAy~F6~Ar??Y^ayf#$AN;dlUyqr+{~1xhZ=CxNz9($GR+p7>j>6#5hZ32C;XvYa zDf+WD^U99{QO~#bD=`)}dY>cZ{vbJ|=Ucp=HgAa107pGY=0`qn4d-YLz{1FB;%qvA zw#D6cE#i~PUlMx%JU7&x?cR=n#n$|N0FU1Xo)MeQ`sW+r#EPlxNl@W9Z!jPddaJttu^?MwTXZ9niMpG60m?ff5} zT30fLN%vju@i3X;L365f6>@V3yTNy{R*~Oa|g<&E2d!L7VDU5d`CjmHt}}hw9;zwG(K52tAB?e*e%DX`uAns){c(~PAilFUozM-OVuvRJ{+<^7ofrkK~jEZ^U+ zL3i{ix?{Mqpe)n}ga0~MU|`zVNdCJH5%*}W0P_!R&>7sa3+uRPAttD^nSDV}x$gV# zC2^QTj&1Ijia!74qlmo!9t<^?uDWGjd;OE1kT(MK)OWtNUqLI6X_fPlsWjRQXQ)u? zCe_h(64Mo*N5NsB-_=zzMo8BGx+amoQ7JyU4N+;tn<7k0LM z#`95L^uM?e_{MpGl|)K?@HM+YIkeSRFit6dxBh2^QjFNZ&e_y01$MEM0^pvegCqo( z?IM=~JFHa-(ML2tJ1yQF0lJ}hRcgZ}=^oj?rYQ?@vm5m1>=B#RNcS8^TIQu26&pp~ z#&zgZ{>6yytP}aLRa?`(y6*@G3+~sQn`1;Cz&rQuzo@*hqZ{=##cCaX*X4;8f=RSC zCA)Y8M$NrZZv}V-()lrka z5NiuwQTz+=y#lTv?)N`<%5V=%U;d$%Io~re+~FGa+lsJiz3Km;w|Z>Ehg1K20Nio_ zptX($)}z*HWyb2D2AAOhf5EZ|#54J6&nE#oej@M{*pU;8t(pRwKS&9uclFOZRsSPR z)?-*S|HkjM5F+w+JMc1>5{-eRuF%FR7MujN5NJ4aQZU_gv%M}?Hnvi5NKI+KNq#qHEQP z#p*yUzD&O%`{_E_c4b5@#j4SbHdOwEfmt4%V5U{yN>p_4^K23D!TH^Cfp}-w55Q7% zAPf^?i8rr|QmWqBY^MWytoSEQ099iw$YZ!hXX$}#nQ(Spoq16A-k*s%W}&ER&4xaz zK~3)7f6RjBdK}L@f*4P~V~&GFvskCN@Xo(qR>*$6Q|UD}Z(}+Z4R*I{6jtC0I!>?9 zkA{nN<$g?1gS!`&$Q|VRt4#MkMcf-;+`NI~ZxoJq6s4og z{gOwbJc&QGQQ;`cn}SBH#wmIyEu{NdRJeKl=vOA3#*BK*%*6E5ctb5*CNjQ2{4z!@ zSi5>kRkW+!Ytbgi2mZ7X{!#l?`3t#esc#pNJ_jlX^O)9 zmHr{Ml4Bmr;5rduJYtH&EupqeZo@#MlAprBb%0!Fqw{JKAlB6zldIQwbO|15y82lP z4oJF3+};3J`FvfkpKGIU>P2e)lH*rC*(_l)zRJj+H#co%nzNc~KYn+kBlAf;ZC z3DKtKU<^9tvu?%h^V3ar-=Uu1Iw%xui&3d#dyFJ@@=Pwq>sDq{j)B-;?if`8*X%D> zM6&HRN{4~83}sb_aYo{-E{_sR9B!DZrIOLK9t5m)r&Ztkv`@b)@YKUqhgrH_iW;G` zt!;~%#O4NaRXyuJ|*!y+0C0}cot{dlFQ=jIf(Y9UIEwM1=_2Sh_OKg#jq2)xdBMA^8 z979V8x%vA?)G$%$WV+VpoVVXJj}#;aDMw8A?66Z!=jtTL(J|Fmx70eO3cH{nFfasW zqfv{|s`z&^7%(uSFVq0{hi2`+k(vKSc)z-Ee;qT7M{2cqts15LP@%ya*p^_ZJr zwN%J&Pm80nH@$Z~gB>+Pt8z31{` zfTH`Y+y7-lbpd;zta!RV!m!)#v4$OHTWk1!Exr^1KZy1I-yPbe)Iz=l7`=|z?Ns-yIz z&XH;dT^(r*09_0Gd&9kR&O>;gWYgkkNYpC}6WM#MEo^2ei|~#1IPe(aXD4XrLwCzu zczYkGill(qH6KlQd%LBk*FSHsC#bI?whl?zNE8hGXGtRoWOx@y6h~jyJl_CF(U3$u zG4)*y?)?&XcQMrI0W3&%aQGllju<%e(hOkJQSc!~SnpM8&2ie9> zN(6U|k8^g!Ne$-j;QFE>wZ;}bSOKI%c-?M<5&s#ABi;#Lya~(&%YK= zlY*H>0f#YhO@zHVXH*e30GiCWCZgUZSx3EN0#Wc1*L6KydXleg4`4`>feZ&Ryl4-< zlEABd5&grV!|#PmbVb|v)*()~WzT0BDx&R0Qbv3rKjxPDv?g00K#HZLeGvlB!3Ans zkVY^%U(qTIZeXGzM;-08R^YASi34Q&4lZMC%M1jo!^tuoE zgNU{T$62QlL4!;&?HH{?%X%0_FSX8-H1PafW@#nZ&T&`mAmVM_WS*aJ4m1WOiQ-|e zadBP5w@a=VSNQDuL8rEERqROoKa(bT_a}KxSdeNp>z&V15uALnbbKkpV{Jp?W_m{n zs+>gu@k)08Rshu&zxi=LR9i$cs7?xFdGHS=4Isud=>v3KE~`0-J7>&8LsZT8becHT z37<{mk!mAi>WF)1LgLK2N3Kd&Ahr1Ma`Xz^XEk;>3bDpvr5iG-Gp znL&jbu>-0r}8=p_n|JS~vfupQD`dyI;$w~-&Pp?ish=+Mt z;;^F7SwGe_P7v42989{1LXI))9 zT5StUUwhx&=((p@SovYwT*kE1rVA--Drp$oDGRBQn*l7claw5>{*9OQ84uYnGplOJ z=Z6}1hacJQqd75V4GqIfYc`ymcoVy-UD3Ca#M=II0xxU+LE`82iusA|l;ccbjr2qP zHwHOdkh@sHZ;NSt{c0o*UQj8XB|OI;&>|20hhEO$-F0O7$XZCE`p@7LYP>tig)5$= z4@j+S%R+2UZbj0->=s;KzMzl4rN)prLO>2}M->HVl;%Lp@fQdrCE zvpyw1MO0)wN-0BZ4P46Y2u?rD+#|ds9hTx+xKv;5AxcgOB&R8atJW3>9p7TB@<%l>P?+kaQOtocfZUrHR;?V#Fl6SJx%j zM&ipzdMjHV5uC(azOCd_s~DappiHY7ZaBl^r%huR4S5F=VB|BLB(aH77n%TU{YGYz z;VZ8=4`;#Ke%Y^-Csf5|%88Lnbj8Z>_>pK7pr-v7H9_WCOmA4s1)EaJJ~N83m# z21fmSakDNW3NGcwy{?l9R2{8%6AL_(i?812R^HJPdObd!D#>M9v11=m2B*Y&poJGD z4^D)HfZGnx{xo+VN5@*A{rT#w#*-lqJ8FayG#SH5|8n|&brqwGTSyG=W(Tw_*;O)G zB(Ql0!-=GkNsbseOriuq8o-ZH%1lCc^1b&Cw(9o|{#$)QM@U;%D7vxjPUI~tSf72( zI3EG5emYimA45tQPJ}>5>PAC8)iT|b6;2yROP;&3w35Y$l5%M#R{U{3>ACY@?2s(|)Jj^{$pr-)qJfO$3V~W65 z1gc> zjrWJWJue>c&3pSGxz!p(xzwND#s9PNSBlbh}LdE)-+Dc0j zg~5EVyvWus%x;y*rmBbxgMC#+Fw>`SY}gzE!ivHpHT3>v!_OoTsO$7cLkWtDk?ohZ zj_&m3dUa5JQcZ>P(nVxq$;oe_*t~Lu(RATIlisVrA=u=yTzQ_Q`LN-#)wQm6jKr@& zW9=t-y=$xG2Xj8)PsMPG{vO|qD}?9~0^VIi0{qUga1_Nk#FWwEXMoPD!LQOM2 z4fx?@ZixmU&uo(3wID$aWdo2O-oi>>o{%HdSbhf1&#?Rqn4c_b83p7gr#uu2%1_O_ zQC1+RN!q0nJ|iq;|Tm;=x>c@Jy@(8!)u0c&`WU(jJ%M8N>HMH{JI zaICQ(R6VVz7eKYxQ^^J>*Ylk&1xK@Lam0XXddQ+~K|!S-vTjpoNF%QyZa}5yB}Ozr z@j7Ixneecmf7HlydFDx=iy$)^aT&k_)ZD$_Y}%&Nv~2r6LNSd zNx93^w;)4FHyB6~gTd?UvPI%+K}8bYa4B>oA(PMx30Fp(m;WZnMWSDSn~#t_eE-eY zF&!e_Z5o`Bd{^GF zc@nSV0w-T}sJ9jzZ*mH~;5>!CsS=Oq1_k;`wVA59s%p?3)iBj?RC0-BgQKDgaE+y& z$zWh_a!FkQmom#>sgN91H&u63X~n+)jQ=EOVg?PX+6V?tiVrFj6;+P?CX|QSKQe)q?hr7S88rcU7irfNQlCZJ}127HVT;1MI7Z+6-_RyBx?U z;4=1Hnt|g>E>mp4kx!ZT#tIpFBe{X3fJ;fTp;y2;BY7sRfa{gyIgJ9Yi}^mD0`8F` zYfO*qME;y&7DPO14yxIpg3(-_vRwe{K8Lu*lRV!^0MVM|D-IW6Z}I^LgNnVy5DZ{l zWNw>$0Zuc^tz?A`)2#A*LIKW`ygP{9U|^LDI0_l6y4+n>z@_X-^ThyTEc50l7&yLk z&A>o#L@a?;z69XtIuE@JU`v*{^;1C6lh!Gq!qGxM{PBlB9-=;*d&1GZA4QQ$G|0%) zJnm5#*b@zf5wU0vU=s=yjXBp&NLW;p0rbRs$zBKekrLUTm@g7fa~ zgDgt(D+R)C&(fK;qPm~RC>Ex!20xsQLfGucP6oWy+qErn!7UgJw z>#1eSQ+D!HvH`3D>Z?-;Ku>Jz1_Lz<$+dKaf<0*i)5F=;T~wO^Y!cJcz8U+lvp5!!5!SPhu1=v$JAUKTmB5%Peph{p{H&I8i$+l4p&{!w;_oD%7 zy*_U>DxlVruM4CLQ2E4KE`YuoDReY>@KhI~0m?efHwF|?k73(tcfk3{XwoM6YW~Y}LTYQyB^{@WwnJRe+v`d^<$}HH_H00UChD=&NH1 zpul6B=4p6&lDhy3I8So&u7J9g*oH!c^)x8O3qY{6Fz-YtfLw`fcJ>Ki2%5HR03u3k z!;(Xlz_!}50SLQks~4d1@s@bTxx#B-Y?A}Z38?ppjm#68{KY2wss$+Pv8^66!4b_V zTLG3&rw|24mWM(CAv0~s0OpHr)d0l0*sA5Kg6T+X6b)e0kX#y7fVEB|BmYVu|ptciRF+fqkwipb+h$pr=eN4d3QnTeLBTre*?=FC%H6F-=docNntw#e? z1zC>n3{d#yc}r0NY`?_Tn*nOOJa3UIfZd+hs2iYo%DKg8fJ@g>Gr)Ojxf^gN6zB4ZxMTqHRa%M$u-1!g^c2uQCLf~9 z1~Bl7Z1fahg_gDkd;!>gr4>@BXa<$<-Y-c!S6e0AQ$QvlmJv8^#d z01ZK68wzmV6Px8Kqlu`><9LPUcv`c%02*Lxkr#V6z)C1_HH`qwRgnia3aE?TM9@>M z1~}_dECuW-ttoo}EMJ?K4Hlr#W80twEuaaq+R|G9jp=M#D@6gkjOU)WrfmUKLbk20 zC4fS&$wfN@v`}hgopLF_T$Q#4egV`Wc+k`YONYx6w)JrVN|4t!DPQ2o)=EeKoOp_D zEhq#~ZONyAq5&En*|uf~0TiQbTdNKM)Pn1?K?*426m=mlfIW?3BDiR#6jtY=6kz9) zFZ&b&)X4ItQ!{{-nX)C9o#aYr2G~>4W=W5C?jJ=pR|A|}Tce%;t|toB0DGbo3{ael zEgPUQfzmq1n}CK`O6yo{0`@eB6b2fnD2Fxs37`>=ZEYxYG|#Y2V>|~O<5@ngrho<@ z%8`PBBO1v7)>D>O_7*f;1v(Z8z@W?PGX=v$kz@^JNZ9LvVxQWVINl|&Y zC36?8#fSh}owH3lXDPUImZG6jN<)jun+SU9!2pgb@~;2}uydBWwmJf6Tfw%hHD2MN zBip)GL52H0u@wWf!)BXBL3N_wK?F;uqsj#Asa}BAVpN9pmyzK^w`tY7f)9Yi){+74 z#l!M71{|Ym&=9TxhcMf^fs=J2U5`z0Wa~si0QO{B7dr&d#g6%%u4Vuu)J~U)9zGlN zAmSET^PT|eq{9Z-F$Y*6YJDw{7NANPy{-{`!D|`yTIA)r1?QWW-~IUUb2(LV5op1& zaJi|ftZEdRqmn6k0XZr%6*;OT53v>`nENW%0u>xz^XAwBr;HCOm|~MaT`;h(`KWS1 z$G+r(fI`M9O2wc#sum2K`jY=GP^gYdo?A~i@5ddg7@}-_d5||cYX7UB|L~yVE^Bn8 z`J~#uGWI1)@r!_}$TzZ#B34n`x$J?fggNnlivH;$dUsY6w_oVAW~Ha|*d zgi{<=uQEPi6?-tMNG0EBJ_xFM-UNNkZ`)mj>a_*ANu_jtZR)0ylVhdx==iQ`VN*h? zB%388RIhD*s@Dj$WScMD7-3&^)J@ozyuW6IeYLt(Fe-X%oM)r)vR12{LX5KM81;Yn ze5i5^Gex7LCGWbvb?0ZpA5=8Io^O;un!KYK`5=@gPujD;E$YylyjEa@RNO;K-Q=iR z*o5-WeT-*hql{D}->g$Q@3Ne#5jd9HCPJ#3M%)BaoVLDcKvfQH6TNOpvE^Y@VD9DH z9Y*Khr`%O3Zi2aQb;ZskQ1>Gcubei)-1EY(ZUU{%wlVwnqJmT-P~8N5jj(##B+%RB zKOwE|nP6)Vc~{&hqcRRzGbwdg_oG;RjRNB<@&aZU!PZXm?-PtrO{{n1j8KZH$Xykq z2FfV^S(P?{QHO1oq7X`vZM|$lEyOk&Mg!GEo*yPRLMd5AhzlgA`_OL18ytR-wIf7?@*;z>qj zQ-iW1Ps@#P5sEy(Hp*C5Q{3dqTHb_9T3U~rus0qw`zGAm-DOj^*ipeDzKG_^2eK^RwyCI;j+;qf(xAQpZaBgU5H( z{G^`|VQ=%*@r!UdW45RyT!%9FOt^<4w30YfRf?dgD=U zSzqKRn_M}&$WeCQmmlOQ`jn`iyWZ^4J;TK~Bm^-d#0vJ&t;i zU*Y^`Y%9zWTteMSiPnKmyl7&#@$)Y>L5fASx!Mqd5~J~(7~ye3tmPojqm5*X9OeA%hmli{Bscer@HioV?U*;=dX)ckESqpU&x_fc z@Mt18a)(jHvrC^JnYjqpOz(0{*2qbjnkA~uOwY*6OMnjw(YNZ z{^UJpBhR0_d#u!Oy~sZU<%4idkI*!3gmB!YLugfV}Z;^rp3FHvxG~Fbd~zo}?H(`~kl~RsPl^*^w;*HYtDQ9X%$@M9J|7qm=l&_{-u*Jr$ZJip_f1}XvVHDWjJ%j%f5~a&)zfI!JA}M?8uFK@o7|lC(ekG1rB0#rO~X@; zp8F;@^)WAMD0SB-X*4ZzYP5!;^`zu#+dA)B=$V5Zfl#E3L)U zBBxfxKF{11IkQ8Jk=EQOl$>57_F6YN<9+4vf!aY{>0_1eLMs)g?}>elP?MYyO6+a> z>~DM$9pvX!{`JJjt9{v-#7%DP%g$(%)1&I#%xv%9Qdtsa)jM zzS!F)nA03WOjVv^ZaOcKe){9*?;fP{p}o?13;8b0^7&__^K|7|I2YSW$q^R0)M+$4 z;k=)!bly*W63Q3ml+NoU&%(LHQ6eYlDlcRy6|dCt#AQ?Qghf`3O3f3_y9i3z6V9Ux zrS1x2+2kfYhL*a8;FY?~V=5)Dt(!cdFml37zVSSa&bKq3h4PgHrR)jiqu84=4vHk7 zPCdx!HL1?~>Pk+Pvw5^l84kPk%+2qcakrQmK$rt5}j#=WH@4hXEtjht1QNyyF$|gr9 zw?&oCN%STga&68C=WWQRgp9Hy({YTcz(jit8m>ZwWpc$GSri%`0@sSs=|it}o#5|GJXKg}yNO2-WK`yW5$Et5~>%8eJL{90CW z?`@9!i;j{1$A9~_ow7c|e9^JLc$T$;j;?qUQka1`>HI9`lT4OYN(0Mc=m)`Mt((p#f@i*6(iwMi+oqVPLw+vMYudDJwxDY*3+>~LmeO}X1!gbf@ zwe>{<#tF~bJ#IpMb{fm3_EIKS3g!P%H$7Z_{rHD?=+Yehl`_`x%#=12tefBJR63`L zC!Kr%=Axr5?n*h)+thK&BwsBv8c3JN$W%5R1M=q|zl-72&28PLBZtq*kv1K5^Q4on zG8$zkWeQ|;PL9tyxk8|nT-`7_FMK}gcvUEGzZo?*o?j|LmtD()E z#6{=-t^EAy$N0Pd1D5jJ=6I<903VA81ONa4009360763o02=@U00000000000JoSV A%>V!Z literal 0 HcmV?d00001 diff --git a/annotate/config/driver_mutations.tsv.gz.tbi b/annotate/config/driver_mutations.tsv.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..e435e27ac26912c0f50093d6beb8ede7fcf49596 GIT binary patch literal 28065 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 literal 0 HcmV?d00001 diff --git a/annotate/config/genome.tab.gz b/annotate/config/genome.tab.gz new file mode 100644 index 0000000000000000000000000000000000000000..d3c179a4b4935f7968da685b4624a4f0b5e028af GIT binary patch literal 19066 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 A;{X5v literal 0 HcmV?d00001 diff --git a/annotate/config/genome.tab.gz.tbi b/annotate/config/genome.tab.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..05c80d769c3467b0a4f5f457accf9d306c64d817 GIT binary patch literal 45526 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 \ No newline at end of file diff --git a/annotate/formatInput.py b/annotate/formatInput.py index cdcefb1..6b049f4 100644 --- a/annotate/formatInput.py +++ b/annotate/formatInput.py @@ -23,7 +23,9 @@ def check_input(self): """ super().check_input() input_type = [] - for infile in (self.vcf_file): + + for infile in (self.vcf_file, self.drv_muts, self.genome_loc, self.lof_consequences , self.header_file ) : + print(infile) input_type.append(SM.input_checker(infile)) return input_type @@ -31,27 +33,34 @@ def run_analysis(self): """ method to run the analysis """ - controls = self.ncontrols - min_read_count = self.minreads - min_target_genes = self.mingenes - ignored_genes = self.ignored_genes - cpus = self.num_processors + vcf = self.vcf_file + drv_muts = self.drv_muts + drv_genes = self.drv_genes + genome_loc = self.genome_loc + lof_con = self.lof_consequences + header_file = self.header_file outdir = self.outdir - gene_sig_dir = self.gene_sig_dir - result_cfg = self.results_cfg - iter = self.numiter global MAGECK_CMD if outdir: - os.makedirs(outdir + '/mageckOut', exist_ok=True) - os.makedirs(outdir + '/bagelOut', exist_ok=True) - + outputPath= outdir + '/anotatevcfOut/' + os.makedirs(outputPath, exist_ok=True) # check input files - (input1, input2) = self.check_input() + (vcf_status) = self.check_input() - if input1 and input2: + if vcf_status[0] == 'y': log.info("Running analysis, input file checks DONE.....") - cldf = SM.combine_count_n_library(self.countfile, self.libfile, outdir=outdir) + (file_name, ext)=SM.get_file_metadata(vcf) + outfile_name=outputPath+file_name + # create list of lof genes... + with open(drv_genes) as f: + lof_gene_list = f.read().splitlines() + filtered_vcf = SM.get_filtered_vars(vcf, outfile_name+'.pass'+ext) + drv_gene_vcf = SM.map_drv_genes(filtered_vcf, genome_loc, header_file, outfile_name+'.genes.vcf') + lof_drv_gene_vcf = SM.filter_lof_genes(drv_gene_vcf, lof_gene_list, outfile_name+'.genes.lof.vcf' ) + drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name+'.muts'+ext) + result_outfile = SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, outfile_name+'.drv'+ext) + else: - sys.exit('Input data is not in required format, see inputFormat in README file') + sys.exit('Input data is not in required format OR input file does not exists, see inputFormat in README file') diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py index e7814e2..984ca91 100644 --- a/annotate/staticMethods.py +++ b/annotate/staticMethods.py @@ -10,18 +10,17 @@ log = logging.getLogger(__name__) -BCFTOOLS_ALL_PASS_CMD='bcftools view -f PASS {} | bgzip -c >{} && tabix -p vcf {}' +FILTER_VARS='bcftools view -f PASS {} | bgzip -c >{} && tabix -f -p vcf {}' -BCFTOOLS_GENE_CMD='bcftools view -f PASS {} | bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ - '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV >{}' +MAP_GENES='bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ + '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' -BCFTOOLS_MUT_CMD='bcftools view -f PASS {} | ' \ - 'bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV |' \ - 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -p vcf {}' +MAP_MUTATIONS='bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV {}|' \ + 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -f -p vcf {}' -BGZIP_TABIX_CMD='cat {} | bgzip -c > {} && tabix -p vcf {}' +BGZIP_TABIX='cat {} | bgzip -c >{} && tabix -f -p vcf {}' -BCFTOOLS_CONCAT_VCF='bcftools concat -a --rm-dups all {} {} {} | bgzip -c >{} && tabix -p vcf {}' +CONCAT_VCF='bcftools concat -a --rm-dups all {} {} {} | bgzip -c >{} && tabix -f -p vcf {}' class StaticMthods(object): """ Static methosds for common tasks """ @@ -34,19 +33,140 @@ def input_checker(infile): checks user input file and returns it's type """ try: - if tarfile.is_tarfile(infile): - log.info(("input is an archive:", infile)) - return 'tar' + if os.path.exists(infile): + log.info(("input file exists", infile)) + return 'y' else: - log.info(("input is a file:", infile)) - return 'file' + return None except IsADirectoryError: - return 'dir' + return None except IOError as ioe: - sys.exit('Error in reading input file:{}'.format(ioe.args[0])) + sys.exit('Error in reading input file{}:{}'.format(ioe.args[0], infile)) # ------------------------------Analysis methods--------------------------------- - @staticmethod - def combine_count_n_library(countfile, libfile, outdir='./'): - print("hello") - return None + @staticmethod + def get_file_metadata(full_file_name): + """ + takes file path as input and gives its path and processed extension + # If there are two extensions adds second extensions as prefix + """ + (_, name) = os.path.split(full_file_name) + (name_no_ext, first_ext) = os.path.splitext(name) + (name_no_ext2, second_ext) = os.path.splitext(name_no_ext) + ext = second_ext + first_ext + return name_no_ext2, ext + + @staticmethod + def get_filtered_vars(vcf, outfile_name): + """ + :param vcf: input vcf file + :param filename: filename no extension + :param ext: file extension + :param outdir: + :return: filtered var vcf outfile + """ + global FILTER_VARS + cmd=FILTER_VARS.format(vcf, outfile_name, outfile_name) + StaticMthods.run_command(cmd) + return outfile_name + + @staticmethod + def map_drv_genes(filtered_vcf, genome_loc, header_file, outfile_name): + """ + :param filtered_vcf: read filtered vcf file + :param filename: oufile name wiyhout extension + :param ext: file extension + :param genome_loc: genome location + :param header_file: vcf custom header file + :param outdir: output directory + :return: + """ + global MAP_GENES + cmd=MAP_GENES.format(genome_loc, header_file, filtered_vcf, outfile_name) + StaticMthods.run_command(cmd) + return outfile_name + + @staticmethod + def filter_lof_genes(drv_gene_vcf, lof_gene_list, out_filename): + """ + :param drv_gene_vcf: + :param drv_genes: + :param out_filename: + :return: + """ + fh = open(out_filename, "w") + with open(drv_gene_vcf) as gene_f: + for line in gene_f: + # write header lines + if line.startswith('#'): + fh.write(line) + else: + gene = (line.split(';VD=')[1]).split('|')[0] + # write matching LoF genes.... + if gene in lof_gene_list: + fh.write(line) + fh.close() + compressed_output= out_filename + '.gz' + cmd = BGZIP_TABIX.format(out_filename, compressed_output, compressed_output ) + StaticMthods.run_command(cmd) + return compressed_output + + @staticmethod + def map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name): + """ + + :param filtered_vcf: + :param drv_muts: + :param header_file: + :param outfile_name: + :return: + """ + global MAP_MUTATIONS + cmd = MAP_MUTATIONS.format(drv_muts, header_file, filtered_vcf, outfile_name, outfile_name) + StaticMthods.run_command(cmd) + return outfile_name + + @staticmethod + def concat_results(drv_muts, lof_vcf, filtered_vcf, outfile_name): + """ + + :param drv_muts: + :param lof_vcf: + :param filtered_vcf: + :param outfile_name: + :return: + """ + global CONCAT_VCF + cmd = CONCAT_VCF.format(drv_muts, lof_vcf, filtered_vcf, outfile_name, outfile_name) + StaticMthods.run_command(cmd) + return + + @staticmethod + def run_command(cmd): + """ + : runs external command + :param cmd: + :return: command output + """ + """ runs command in a shell, returns stdout and exit code""" + if not len(cmd): + raise ValueError("Must supply at least one argument") + try: + # To capture standard error in the result, use stderr=subprocess.STDOUT: + cmd_obj = Popen(cmd, stdin=None, stdout=PIPE, stderr=PIPE, + shell=True, universal_newlines=True, bufsize=-1, + close_fds=True, executable='/bin/bash') + logging.info("running command:{}".format(cmd)) + (out, error) = cmd_obj.communicate() + exit_code = cmd_obj.returncode + if (exit_code == 0): + logging.info("bcftools run successfully") + else: + logging.debug("Error: bcftools exited with non zero exit status, please check log file more details") + logging.error("OUT:{}:Error:{}:Exit:{}".format(out, error, exit_code)) + return 0 + except OSError as oe: + logging.error("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) + sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) + + diff --git a/setup.py b/setup.py index 64012f3..21b0c3c 100644 --- a/setup.py +++ b/setup.py @@ -12,8 +12,8 @@ 'python_requires': '>= 3.3', 'setup_requires': ['pytest','pytest-cover', 'radon'], 'install_requires': ['tzlocal'], - 'packages': ['annotateVcf'], - 'package_data': {'annotateVcf':['config/*.conf','config/*.tbi','config/*.tab.gz']}, + 'packages': ['annotate'], + 'package_data': {'annotate':['config/*.conf','config/*.tbi','config/*.tab.gz']}, 'entry_points': { 'console_scripts': ['annotateVcf=annotate.annotate_cmd:main'], } From a38d6ca55d3a49d6845c6d206e17b61c8aee09f4 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Tue, 30 Jun 2020 23:14:26 +0100 Subject: [PATCH 04/16] added consequences from file and method to generate intermediate files in a tmpfolder --- annotate/abstractAnnotate.py | 1 - annotate/formatInput.py | 37 ++++++++++++++++++++-------------- annotate/staticMethods.py | 39 ++++++++++++++++++++++++++++-------- 3 files changed, 53 insertions(+), 24 deletions(-) diff --git a/annotate/abstractAnnotate.py b/annotate/abstractAnnotate.py index 248fa15..71fd7ff 100644 --- a/annotate/abstractAnnotate.py +++ b/annotate/abstractAnnotate.py @@ -8,7 +8,6 @@ class AbstractAnnotate(ABC): ''' def __init__(self, **kwargs): - print(kwargs) self.vcf_file = kwargs['vcf_file'] self.drv_muts = kwargs['driver_mutations'] self.drv_genes = kwargs.get('driver_genes') diff --git a/annotate/formatInput.py b/annotate/formatInput.py index 6b049f4..da6f123 100644 --- a/annotate/formatInput.py +++ b/annotate/formatInput.py @@ -2,6 +2,8 @@ import json import os import sys + + from annotate.abstractAnnotate import AbstractAnnotate from annotate.staticMethods import StaticMthods as SM log = logging.getLogger(__name__) @@ -25,8 +27,7 @@ def check_input(self): input_type = [] for infile in (self.vcf_file, self.drv_muts, self.genome_loc, self.lof_consequences , self.header_file ) : - print(infile) - input_type.append(SM.input_checker(infile)) + input_type.append(SM.input_checker(infile)) return input_type def run_analysis(self): @@ -37,7 +38,7 @@ def run_analysis(self): drv_muts = self.drv_muts drv_genes = self.drv_genes genome_loc = self.genome_loc - lof_con = self.lof_consequences + lof_consequences = self.lof_consequences header_file = self.header_file outdir = self.outdir @@ -47,20 +48,26 @@ def run_analysis(self): os.makedirs(outputPath, exist_ok=True) # check input files (vcf_status) = self.check_input() - + if vcf_status[0] == 'y': - log.info("Running analysis, input file checks DONE.....") + log.info("input file checks PASSED, running analysis, .....") (file_name, ext)=SM.get_file_metadata(vcf) - outfile_name=outputPath+file_name - # create list of lof genes... - with open(drv_genes) as f: - lof_gene_list = f.read().splitlines() - filtered_vcf = SM.get_filtered_vars(vcf, outfile_name+'.pass'+ext) - drv_gene_vcf = SM.map_drv_genes(filtered_vcf, genome_loc, header_file, outfile_name+'.genes.vcf') - lof_drv_gene_vcf = SM.filter_lof_genes(drv_gene_vcf, lof_gene_list, outfile_name+'.genes.lof.vcf' ) - drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name+'.muts'+ext) - result_outfile = SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, outfile_name+'.drv'+ext) - + with SM.tempdir(outputPath) as base_dir: + logging.info(base_dir) + outfile_name=base_dir+'/'+file_name + final_output=outputPath+file_name + # create list of lof genes... + with open(drv_genes) as f: + lof_gene_list = f.read().splitlines() + info_vcf_prm = SM.format_consequences(lof_consequences) + filtered_vcf = SM.get_filtered_vars(vcf, outfile_name+'.pass'+ext) + drv_gene_vcf = SM.map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_name+'.genes.vcf') + lof_drv_gene_vcf = SM.filter_lof_genes(drv_gene_vcf, lof_gene_list, outfile_name+'.genes.lof.vcf' ) + drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name+'.muts'+ext) + SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, final_output+'.drv'+ext) + logging.info("analysis completed successfully") + logging.info(base_dir) + else: sys.exit('Input data is not in required format OR input file does not exists, see inputFormat in README file') diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py index 984ca91..d5357c1 100644 --- a/annotate/staticMethods.py +++ b/annotate/staticMethods.py @@ -1,19 +1,24 @@ import sys import os -import tarfile -import json import io import tempfile from subprocess import Popen, PIPE, STDOUT import logging import pkg_resources +import shutil + +from contextlib import contextmanager log = logging.getLogger(__name__) FILTER_VARS='bcftools view -f PASS {} | bgzip -c >{} && tabix -f -p vcf {}' -MAP_GENES='bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ - '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' +#MAP_GENES='bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ +# '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' + +MAP_GENES='bcftools annotate -a {} -i \' {} \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' + + MAP_MUTATIONS='bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV {}|' \ 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -f -p vcf {}' @@ -34,7 +39,6 @@ def input_checker(infile): """ try: if os.path.exists(infile): - log.info(("input file exists", infile)) return 'y' else: return None @@ -44,6 +48,15 @@ def input_checker(infile): sys.exit('Error in reading input file{}:{}'.format(ioe.args[0], infile)) # ------------------------------Analysis methods--------------------------------- + @staticmethod + def format_consequences(lof_con): + effect_type = [] + with open(lof_con) as fh_con: + for effect in fh_con.readlines(): + effect_type.append("INFO/VC=\""+effect.strip()+"\"") + info_vc_prm=' || '.join(effect_type) + return info_vc_prm + @staticmethod def get_file_metadata(full_file_name): """ @@ -71,7 +84,7 @@ def get_filtered_vars(vcf, outfile_name): return outfile_name @staticmethod - def map_drv_genes(filtered_vcf, genome_loc, header_file, outfile_name): + def map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_name): """ :param filtered_vcf: read filtered vcf file :param filename: oufile name wiyhout extension @@ -82,7 +95,7 @@ def map_drv_genes(filtered_vcf, genome_loc, header_file, outfile_name): :return: """ global MAP_GENES - cmd=MAP_GENES.format(genome_loc, header_file, filtered_vcf, outfile_name) + cmd=MAP_GENES.format(genome_loc, info_vcf_prm, header_file, filtered_vcf, outfile_name) StaticMthods.run_command(cmd) return outfile_name @@ -156,7 +169,7 @@ def run_command(cmd): cmd_obj = Popen(cmd, stdin=None, stdout=PIPE, stderr=PIPE, shell=True, universal_newlines=True, bufsize=-1, close_fds=True, executable='/bin/bash') - logging.info("running command:{}".format(cmd)) + #logging.info("running command:{}".format(cmd)) (out, error) = cmd_obj.communicate() exit_code = cmd_obj.returncode if (exit_code == 0): @@ -170,3 +183,13 @@ def run_command(cmd): sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) + @contextmanager + def tempdir(mypath): + path = tempfile.mkdtemp(dir=mypath) + try: + yield path + finally: + try: + shutil.rmtree(path) + except IOError: + sys.stderr.write('Failed to clean up temp dir {}'.format(path)) \ No newline at end of file From 0d64fcf4e57338d69fbbc27efcbe63cdb30865cf Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Tue, 30 Jun 2020 23:47:55 +0100 Subject: [PATCH 05/16] added flag to remove tmp files --- annotate/abstractAnnotate.py | 1 + annotate/annotate_cmd.py | 2 ++ annotate/formatInput.py | 11 +++++++---- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/annotate/abstractAnnotate.py b/annotate/abstractAnnotate.py index 71fd7ff..b91de34 100644 --- a/annotate/abstractAnnotate.py +++ b/annotate/abstractAnnotate.py @@ -15,6 +15,7 @@ def __init__(self, **kwargs): self.lof_consequences = kwargs.get('lof_consequences') self.header_file = kwargs.get('header_file') self.outdir = kwargs.get('outdir') + self.keepTmp = kwargs.get('keepTmp') super().__init__() @abstractmethod diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py index 6c32572..b553678 100644 --- a/annotate/annotate_cmd.py +++ b/annotate/annotate_cmd.py @@ -54,6 +54,8 @@ def main(): optional.add_argument("-o", "--outdir", type=str, dest="outdir", default=None, help="path to output directory") + optional.add_argument("-tmp", "--keepTmp", action="store_true", dest="keepTmp", + default=False, help="set option to keep tmporary files") optional.add_argument("-v", "--version", action='version', version='%(prog)s ' + version) optional.add_argument("-q", "--quiet", action="store_false", dest="verbose", required=False, default=True) diff --git a/annotate/formatInput.py b/annotate/formatInput.py index da6f123..e47d080 100644 --- a/annotate/formatInput.py +++ b/annotate/formatInput.py @@ -41,8 +41,9 @@ def run_analysis(self): lof_consequences = self.lof_consequences header_file = self.header_file outdir = self.outdir + keepTmp = self.keepTmp + - global MAGECK_CMD if outdir: outputPath= outdir + '/anotatevcfOut/' os.makedirs(outputPath, exist_ok=True) @@ -53,9 +54,11 @@ def run_analysis(self): log.info("input file checks PASSED, running analysis, .....") (file_name, ext)=SM.get_file_metadata(vcf) with SM.tempdir(outputPath) as base_dir: - logging.info(base_dir) + logging.info(base_dir) outfile_name=base_dir+'/'+file_name final_output=outputPath+file_name + if keepTmp: + outfile_name = outputPath + file_name # create list of lof genes... with open(drv_genes) as f: lof_gene_list = f.read().splitlines() @@ -66,8 +69,8 @@ def run_analysis(self): drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name+'.muts'+ext) SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, final_output+'.drv'+ext) logging.info("analysis completed successfully") - logging.info(base_dir) - + logging.info("temporary files will be removed iflag keepTmp is not set") + else: sys.exit('Input data is not in required format OR input file does not exists, see inputFormat in README file') From 80ad90129716bdc792b48789e12e1540c354fb81 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Wed, 1 Jul 2020 13:38:30 +0100 Subject: [PATCH 06/16] updated README --- README.md | 139 +++++++++++++++++- annotate/annotate_cmd.py | 6 +- ...gz => driver_mutations_grch38_v1.0.tsv.gz} | Bin ...> driver_mutations_grch38_v1.0.tsv.gz.tbi} | Bin .../{genome.tab.gz => genome_grch38.tab.gz} | Bin ...me.tab.gz.tbi => genome_grch38.tab.gz.tbi} | Bin .../{driver_genes.txt => lof_genes_v1.0.txt} | 0 annotate/staticMethods.py | 7 +- 8 files changed, 141 insertions(+), 11 deletions(-) mode change 100644 => 100755 README.md rename annotate/config/{driver_mutations.tsv.gz => driver_mutations_grch38_v1.0.tsv.gz} (100%) rename annotate/config/{driver_mutations.tsv.gz.tbi => driver_mutations_grch38_v1.0.tsv.gz.tbi} (100%) rename annotate/config/{genome.tab.gz => genome_grch38.tab.gz} (100%) rename annotate/config/{genome.tab.gz.tbi => genome_grch38.tab.gz.tbi} (100%) rename annotate/config/{driver_genes.txt => lof_genes_v1.0.txt} (100%) diff --git a/README.md b/README.md old mode 100644 new mode 100755 index 1b9689a..c91c900 --- a/README.md +++ b/README.md @@ -1,3 +1,138 @@ -# annotateVCF +# annotateVcf +| Master | Develop | +| --------------------------------------------------- | ----------------------------------------------------- | +| [![Master Badge][travis-master-badge]][travis-repo] | [![Develop Badge][travis-develop-badge]][travis-repo] | -This project hosts scripts to annotate VCF files using user defined genomic locations and vcf header data \ No newline at end of file +This project hosts scripts to annotate VCF files using user defined driver genes and mutations + + + +- [Design](#design) +- [Tools](#tools) + - [annotateVcf](#annotateVcf) + - [inputFormat](#inputformat) + - [outputFormat](#outputformat) +- [INSTALL](#install) + - [Package Dependencies](#package-dependencies) +- [Development environment](#development-environment) + - [Development Dependencies](#development-dependencies) + - [Setup VirtualEnv](#setup-virtualenv) +- [Cutting a release](#cutting-a-release) + - [Install via `.whl` (wheel)](#install-via-whl-wheel) +- [Reference](#reference) + + + +## Design +Uses bcftools and tabix from htslib + +## Tools + +`annotateVcf` has multiple commands, listed with `annotateVcf --help`. + +### annotateVcf +Takes vcf file as input along with driver gene information and outputs VCF with updated INFO field. + +Various exceptions can occur for malformed input files. + +### inputFormat + + * ```VCF file``` snp or indel vcf file annoated using [VAGrENT] + * ```Driver annotation and reference files``` please refer the files in annotate/config folder + * ```lof_genes.txt``` list of known loss of function [LoF] genes + * ```driver_mutations_grch38.tsv.gz``` tab separated driver mutations along with effect type + * ```genome_grch38.tab.gz``` tab separated chromosme lenght file created from genome index file + * ```lof_consequences.txt``` consequence types to be considerd under LoF category + * ```vcf_info.txt``` vcf header and INFO tag + +### outputFormat + + * ```input.drv.vcf.gz ``` output vcf file with DRV info tag + + +## INSTALL +Installing via `pip install`. Simply execute with the path to the compiled 'whl' found on the [release page][annotateVcf-releases]: + +```bash +pip install annotateVcf.X.X.X-py3-none-any.whl +``` + +Release `.whl` files are generated as part of the release process and can be found on the [release page][annotateVcf-releases] + +### Package Dependancies + +`pip` will install the relevant dependancies, listed here for convenience, please refer requirements.txt for versions: + +## Development environment + +This project uses git pre-commit hooks. As these will execute on your system it +is entirely up to you if you activate them. + +If you want tests, coverage reports and lint-ing to automatically execute before +a commit you can activate them by running: + +``` +git config core.hooksPath git-hooks +``` + +Only a test failure will block a commit, lint-ing is not enforced (but please consider +following the guidance). + +You can run the same checks manually without a commit by executing the following +in the base of the clone: + +```bash +./run_tests.sh +``` + +### Development Dependencies + +#### Setup VirtualEnv + +``` +cd $PROJECTROOT +hash virtualenv || pip3 install virtualenv +virtualenv -p python3 env +source env/bin/activate +python setup.py develop # so bin scripts can find module +``` + +For testing/coverage (`./run_tests.sh`) + +``` +source env/bin/activate # if not already in env +pip install pytest +pip install pytest-cov +``` + +__Also see__ [Package Dependancies](#package-dependancies) + +### Cutting a release + +__Make sure the version is incremented__ in `./setup.py` + +### Install via `.whl` (wheel) + +Generate `.whl` + +```bash +source env/bin/activate # if not already +python setup.py bdist_wheel -d dist +``` + +Install .whl + +```bash +# this creates an wheel archive which can be copied to a deployment location, e.g. +scp dist/annotateVcf.X.X.X-py3-none-any.whl user@host:~/wheels +# on host +pip install --find-links=~/wheels annotateVcf +``` + +### Reference + + [VAGrENT]: https://github.com/cancerit/VAGrENT + [travis-master-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=master + [travis-develop-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=develop + [travis-repo]: https://travis-ci.org/cancerit/annotateVcf + [annotateVcf-releases]: https://github.com/cancerit/annotateVcf/releases diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py index b553678..ded79b6 100644 --- a/annotate/annotate_cmd.py +++ b/annotate/annotate_cmd.py @@ -9,9 +9,9 @@ configdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config/') header_info = configdir + 'vcf_info.txt' log_config = configdir + 'logging.conf' -genome_tab = configdir + 'genome.tab.gz' -drv_gene = configdir + 'driver_genes.txt' -drv_mut = configdir + 'driver_mutations.tsv.gz' +genome_tab = configdir + 'genome_grch38.tab.gz' +drv_gene = configdir + 'lof_genes_v1.0.txt' +drv_mut = configdir + 'driver_mutations_grch38_v1.0.tsv.gz' lof_consq = configdir + 'lof_consequences.txt' logging.config.fileConfig(log_config) log = logging.getLogger(__name__) diff --git a/annotate/config/driver_mutations.tsv.gz b/annotate/config/driver_mutations_grch38_v1.0.tsv.gz similarity index 100% rename from annotate/config/driver_mutations.tsv.gz rename to annotate/config/driver_mutations_grch38_v1.0.tsv.gz diff --git a/annotate/config/driver_mutations.tsv.gz.tbi b/annotate/config/driver_mutations_grch38_v1.0.tsv.gz.tbi similarity index 100% rename from annotate/config/driver_mutations.tsv.gz.tbi rename to annotate/config/driver_mutations_grch38_v1.0.tsv.gz.tbi diff --git a/annotate/config/genome.tab.gz b/annotate/config/genome_grch38.tab.gz similarity index 100% rename from annotate/config/genome.tab.gz rename to annotate/config/genome_grch38.tab.gz diff --git a/annotate/config/genome.tab.gz.tbi b/annotate/config/genome_grch38.tab.gz.tbi similarity index 100% rename from annotate/config/genome.tab.gz.tbi rename to annotate/config/genome_grch38.tab.gz.tbi diff --git a/annotate/config/driver_genes.txt b/annotate/config/lof_genes_v1.0.txt similarity index 100% rename from annotate/config/driver_genes.txt rename to annotate/config/lof_genes_v1.0.txt diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py index d5357c1..4c743ce 100644 --- a/annotate/staticMethods.py +++ b/annotate/staticMethods.py @@ -12,14 +12,9 @@ log = logging.getLogger(__name__) FILTER_VARS='bcftools view -f PASS {} | bgzip -c >{} && tabix -f -p vcf {}' - -#MAP_GENES='bcftools annotate -a {} -i \'INFO/VC="stop_lost" || INFO/VC="start_lost" ' \ -# '|| INFO/VC="ess_splice" || INFO/VC="nonsense" || INFO/VC="frameshift" \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' - + MAP_GENES='bcftools annotate -a {} -i \' {} \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' - - MAP_MUTATIONS='bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV {}|' \ 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -f -p vcf {}' From 1d02e656214ec969d3b632ffd98a589df511dd91 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Wed, 1 Jul 2020 14:06:44 +0100 Subject: [PATCH 07/16] added README and tests first draft --- .travis.yml | 48 +++++++++++++++++ CHANGES.md | 1 + git-hooks/pre-commit | 67 +++++++++++++++++++++++ run_tests.sh | 19 +++++++ tests/__init__.py | 0 tests/test_check_combined_data.py | 90 +++++++++++++++++++++++++++++++ tests/test_check_input.py | 24 +++++++++ tox.ini | 7 +++ 8 files changed, 256 insertions(+) create mode 100755 .travis.yml create mode 100755 git-hooks/pre-commit create mode 100755 run_tests.sh create mode 100755 tests/__init__.py create mode 100755 tests/test_check_combined_data.py create mode 100755 tests/test_check_input.py create mode 100755 tox.ini diff --git a/.travis.yml b/.travis.yml new file mode 100755 index 0000000..9f3c6f7 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,48 @@ +dist: trusty + +notifications: + email: false + slack: wtsi-cgpit:ptUMR1tkNyZJYd9TpGoss8WR + +env: + global: + - CC_TEST_REPORTER_ID=747d8a7fc1700cea5c7e07aba5de7a70acd6a695c7ff481852bbcf95c3f1086c + +addons: + apt: + packages: + - build-essential # everything + - zlib1g-dev # many + - libcurl4-openssl-dev # many + - unzip # kentools/pcap + - libcairo2-dev # give png.h for kentsrc and used by R in later components + - time + - curl + +before_install: # installs bcftools and tabix + - sudo apt-get update + - sudo apt-get install -y bcftools + - sudo apt-get install -y tabix + +language: python + +python: + - "3.7.2" + +install: + - pip install -r requirements.txt + +before_script: + - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter + - chmod +x ./cc-test-reporter + - ./cc-test-reporter before-build + +script: + - which python + - pytest --cov-report term --cov-report xml --cov-fail-under=50 --cov=pyCRISPRcleanR + - coverage xml + +after_script: + - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT + +sudo: false diff --git a/CHANGES.md b/CHANGES.md index bef1c51..ffdf69c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,2 +1,3 @@ ## 1.0.0 +* First commit diff --git a/git-hooks/pre-commit b/git-hooks/pre-commit new file mode 100755 index 0000000..f68d558 --- /dev/null +++ b/git-hooks/pre-commit @@ -0,0 +1,67 @@ +#!/bin/sh +# +# An example hook script to verify what is about to be committed. +# Called by "git commit" with no arguments. The hook should +# exit with non-zero status after issuing an appropriate message if +# it wants to stop the commit. +# +# To enable this hook, rename this file to "pre-commit". + +echo 'Running git hooks' + +if git rev-parse --verify HEAD >/dev/null 2>&1 +then + against=HEAD +else + # Initial commit: diff against an empty tree object + echo 'No HEAD....exiting.' + exit 1 +fi + +# If you want to allow non-ASCII filenames set this variable to true. +allownonascii=$(git config --bool hooks.allownonascii) + +# Redirect output to stderr. +exec 1>&2 + +# Cross platform projects tend to avoid non-ASCII filenames; prevent +# them from being added to the repository. We exploit the fact that the +# printable range starts at the space character and ends with tilde. +if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. + test $(git diff --cached --name-only --diff-filter=A -z $against | + LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 +then + cat <<\EOF +Error: Attempt to add a non-ASCII file name. +This can cause problems if you want to work with people on other platforms. +To be portable it is advisable to rename the file. +If you know what you are doing you can disable this check using: + git config hooks.allownonascii true +EOF + exit 1 +fi + +# If there are whitespace errors, print the offending file names and fail. +git diff-index --check --cached $against -- +code=$? + +if [ "$code" != "0" ] + then + exit $code +fi + +MYPACKAGE=annotate +#git diff --cached --name-only --diff-filter=ACM | xargs -I {} pycodestyle {} +pycodestyle $MYPACKAGE + +code=$? + +if [ "$code" != "0" ] + then + exit $code +fi + +echo 'Finished Running git hooks' diff --git a/run_tests.sh b/run_tests.sh new file mode 100755 index 0000000..ce57ea6 --- /dev/null +++ b/run_tests.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +set -e +MYPACKAGE=pyCRISPRcleanR +pytest \ + --cov-report term \ + --cov-report html \ + --cov-fail-under=50 \ + --cov=$MYPACKAGE \ + -vv + +#echo -e "\n#################\n# Running pycodestype:\n" +set +e +pycodestyle \ +$MYPACKAGE + +set +e +radon cc \ + -nc \ +$MYPACKAGE diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/tests/test_check_combined_data.py b/tests/test_check_combined_data.py new file mode 100755 index 0000000..c8cf555 --- /dev/null +++ b/tests/test_check_combined_data.py @@ -0,0 +1,90 @@ +import pyCRISPRcleanR.formatInput as fc +import pyCRISPRcleanR.staticMethods as sm +import pyCRISPRcleanR.plots as PLT +import pandas as pd +import pytest +import os, tempfile +import filecmp + +''' +written test to check codebase integrity +of archCompare +''' + + +class TestClass(): + pass + + def test_static_methods(self): + testdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/') + t_libfile = testdir + 'KY_libv1.0_chr22.tsv.gz' + t_countfile = testdir + 'HT-29_counts_chr22.tsv.gz' + picke_file = testdir + 'pickled_df_HT-29.pkl' + expected_norm_gene_summary = testdir + 'mageck_gene_summary_norm.txt' + expected_corrected_gene_summary = testdir + 'mageck_gene_summary_corrected.txt' + controls = 1 + min_read_count = 30 + min_target_genes = 3 + ignored_genes = [] + + gene_sig_tar = testdir + 'ref_genes.tar.gz' + cpus = 1 + outdir = tempfile.mkdtemp(dir=".") + + t_fcfile = testdir + 'crispr_fc.out' + expected_BAGEL_outfile = testdir + 'bagelp.out' + bagel_output = outdir + '/bagelOut/bagel.out' + if outdir: + os.makedirs(outdir + '/mageckOut', exist_ok=True) + os.makedirs(outdir + '/bagelOut', exist_ok=True) + + # check input type function + mystatic_obj = sm.StaticMthods() + myPLT = PLT.PlotData() + cldf = mystatic_obj.combine_count_n_library(t_countfile, t_libfile, outdir=outdir) + assert (2072, 8) == cldf.shape, 'combined_count_n_lib' + cldf = mystatic_obj.filter_data(cldf, controls, min_read_count) + assert (2038, 8) == cldf.shape, 'filter_data' + cldf, no_rep, norm_counts_file, geneFC, sgRNAFC, fc, fc_file = mystatic_obj.get_norm_count_n_fold_changes(cldf, + controls, + outdir=outdir) + assert (2038, 14) == cldf.shape, 'get_norm_count_n_fold_changes' + assert 3 == no_rep, 'number of replicates' + ref_gene_list_dict = mystatic_obj.load_signature_files(gene_sig_tar, cldf) + obs_pred_df = mystatic_obj.get_obs_predictions(sgRNAFC, ref_gene_list_dict['essential_sgRNAs'], + ref_gene_list_dict['non_essential_sgRNAs']) + assert (94, 2) == obs_pred_df.shape, 'get data for roc' + myPLT.roc_curve(obs_pred_df, data_type='sgRNA', saveto=outdir + '/04_roc_curve') + myPLT.pr_rc_curve(obs_pred_df, data_type='sgRNA', saveto=outdir + '/04_pr_rc_curve') + cbs_dict = mystatic_obj.run_cbs(cldf, cpus) + assert "dict_keys([22])" == "{}".format(cbs_dict.keys()), 'run_cbs' + alldata, corrected_counts_file, cfc, cfc_file = mystatic_obj.process_segments(cbs_dict, ignored_genes, + min_target_genes, controls, + no_rep, outdir=outdir) + # only used to create final test results + # alldata.to_pickle('pickled_df_HT-29.pkl', compression='gzip', protocol=-1) + expected_df = pd.read_pickle(picke_file, compression='gzip') + result = expected_df.equals(alldata) + assert (2038, 24) == alldata.shape, 'process_segments' + # test code no checks + norm_gene_summary = mystatic_obj.run_mageck(norm_counts_file, outfile_prefix=outdir + '/mageckOut/normalised') + assert filecmp.cmp(expected_norm_gene_summary, norm_gene_summary, + shallow=True), 'mageck out files are identical' + corrected_gene_summary = mystatic_obj.run_mageck(corrected_counts_file, + outfile_prefix=outdir + '/mageckOut/corrected') + assert filecmp.cmp(expected_corrected_gene_summary, corrected_gene_summary, + shallow=True), 'mageck out files are identical' + cbs_dict_norm = mystatic_obj.run_cbs(alldata, cpus, fc_col="correctedFC") + myPLT.plot_segments(cbs_dict, cbs_dict_norm, outdir=outdir) + mystatic_obj.run_bagel(t_fcfile, ref_gene_list_dict['essential_genes'], + ref_gene_list_dict['non_essential_genes'], cpus, column_list=list(range(1, fc.shape[1] - 1, 1)), NUM_BOOTSTRAPS=10, + outfilename=bagel_output) + assert filecmp.cmp(expected_BAGEL_outfile, bagel_output, + shallow=False), 'mageck out files are identical' + + # assert True == result, 'process_segments: check results' + + +if __name__ == '__main__': + mytests = TestClass() + mytests() diff --git a/tests/test_check_input.py b/tests/test_check_input.py new file mode 100755 index 0000000..e634894 --- /dev/null +++ b/tests/test_check_input.py @@ -0,0 +1,24 @@ +import annotate.formatInput as fc +import annotate.staticMethods as sm +import pytest +import os + +''' +written test to check codebase integrity +of archCompare +''' + +class TestClass(): + testdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'data/') + t_countfile=testdir + 'KY_libv1.0_chr22.tsv.gz' + t_libfile = testdir + 'HT-29_counts_chr22.tsv.gz' + cwdpath=os.getcwd() + + def test_file_input(self): + # check input type function + my_tar_tar=fc.CrisprCleanR(countfile=self.t_countfile, libfile=self.t_libfile) + assert ['file','file'] == my_tar_tar.check_input(),'tar n tar test OK' + +if __name__ == '__main__': + mytests=TestClass() + mytests() diff --git a/tox.ini b/tox.ini new file mode 100755 index 0000000..c61e2d3 --- /dev/null +++ b/tox.ini @@ -0,0 +1,7 @@ +[pycodestyle] +max-line-length = 115 +ignore = W191,E128 +# if you are using code-climate you need to duplicate settings under pep8 heading +[pep8] +max-line-length = 115 +ignore= From ee6e5fe366e51bb7345439e961054279649aa251 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Thu, 2 Jul 2020 19:16:34 +0100 Subject: [PATCH 08/16] commit before tests --- .github/testData/input.drv.vcf.gz | Bin 26327 -> 0 bytes .github/testData/input.drv.vcf.gz.tbi | Bin 1757 -> 0 bytes .github/testData/input.genes.lof.vcf.gz | Bin 24729 -> 0 bytes .github/testData/input.genes.lof.vcf.gz.tbi | Bin 345 -> 0 bytes .github/testData/input.muts.vcf.gz | Bin 25042 -> 0 bytes .github/testData/input.muts.vcf.gz.tbi | Bin 643 -> 0 bytes .github/testData/input.pass.vcf.gz | Bin 26078 -> 0 bytes .github/testData/input.pass.vcf.gz.tbi | Bin 1777 -> 0 bytes .github/testData/input.vcf.gz | Bin 26832 -> 0 bytes .github/testData/input.vcf.gz.tbi | Bin 1831 -> 0 bytes README.md | 19 +- annotate/.abstractAnnotate.py.swp | Bin 0 -> 12288 bytes annotate/abstractAnnotate.py | 11 +- annotate/annotate_cmd.py | 36 +- annotate/config/drvData.json | 8 + .../driver_mutations_grch38_v1.0.tsv.gz | Bin .../driver_mutations_grch38_v1.0.tsv.gz.tbi | Bin .../config/{ => drvData}/genome_grch38.tab.gz | Bin .../{ => drvData}/genome_grch38.tab.gz.tbi | Bin .../lof_genes_previous_symbol.v1.0.txt | 282 +++++++++++ .../config/{ => drvData}/lof_genes_v1.0.txt | 6 +- annotate/config/{ => drvData}/vcf_info.txt | 0 annotate/config/lof_consequences.txt | 5 - annotate/formatInput.py | 47 +- annotate/staticMethods.py | 89 +++- requirements.txt | 4 + run_tests.sh | 2 +- tests/test_check_combined_data.py | 84 +--- tests/test_check_input.py | 14 +- tests/test_drvData.json | 8 + .../test_drvData/driver_mutations_test.tsv.gz | Bin 0 -> 171 bytes .../driver_mutations_test.tsv.gz.tbi | Bin 0 -> 593 bytes tests/test_drvData/genome_grch38.tab.gz | Bin 0 -> 266 bytes tests/test_drvData/genome_grch38.tab.gz.tbi | Bin 0 -> 4180 bytes .../lof_genes_previous_symbol.v1.0.txt | 282 +++++++++++ tests/test_drvData/lof_genes_v1.0.txt | 458 ++++++++++++++++++ tests/test_drvData/vcf_info.txt | 1 + tests/test_input_vcf/input.vcf.gz | Bin 0 -> 5002 bytes tests/test_input_vcf/input.vcf.gz.tbi | Bin 0 -> 1797 bytes tests/test_output/input.drv.vcf.gz | Bin 0 -> 4482 bytes tests/test_output/input.drv.vcf.gz.tbi | Bin 0 -> 1745 bytes tests/test_output/input.genes.lof.vcf.gz | Bin 0 -> 2847 bytes tests/test_output/input.genes.lof.vcf.gz.tbi | Bin 0 -> 336 bytes tests/test_output/input.muts.vcf.gz | Bin 0 -> 3166 bytes tests/test_output/input.muts.vcf.gz.tbi | Bin 0 -> 634 bytes tests/test_output/input.pass.vcf.gz | Bin 0 -> 4233 bytes tests/test_output/input.pass.vcf.gz.tbi | Bin 0 -> 1747 bytes 47 files changed, 1199 insertions(+), 157 deletions(-) delete mode 100644 .github/testData/input.drv.vcf.gz delete mode 100644 .github/testData/input.drv.vcf.gz.tbi delete mode 100644 .github/testData/input.genes.lof.vcf.gz delete mode 100644 .github/testData/input.genes.lof.vcf.gz.tbi delete mode 100644 .github/testData/input.muts.vcf.gz delete mode 100644 .github/testData/input.muts.vcf.gz.tbi delete mode 100644 .github/testData/input.pass.vcf.gz delete mode 100644 .github/testData/input.pass.vcf.gz.tbi delete mode 100644 .github/testData/input.vcf.gz delete mode 100644 .github/testData/input.vcf.gz.tbi create mode 100644 annotate/.abstractAnnotate.py.swp create mode 100644 annotate/config/drvData.json rename annotate/config/{ => drvData}/driver_mutations_grch38_v1.0.tsv.gz (100%) rename annotate/config/{ => drvData}/driver_mutations_grch38_v1.0.tsv.gz.tbi (100%) rename annotate/config/{ => drvData}/genome_grch38.tab.gz (100%) rename annotate/config/{ => drvData}/genome_grch38.tab.gz.tbi (100%) create mode 100644 annotate/config/drvData/lof_genes_previous_symbol.v1.0.txt rename annotate/config/{ => drvData}/lof_genes_v1.0.txt (99%) rename annotate/config/{ => drvData}/vcf_info.txt (100%) delete mode 100755 annotate/config/lof_consequences.txt create mode 100644 tests/test_drvData.json create mode 100644 tests/test_drvData/driver_mutations_test.tsv.gz create mode 100644 tests/test_drvData/driver_mutations_test.tsv.gz.tbi create mode 100644 tests/test_drvData/genome_grch38.tab.gz create mode 100644 tests/test_drvData/genome_grch38.tab.gz.tbi create mode 100644 tests/test_drvData/lof_genes_previous_symbol.v1.0.txt create mode 100644 tests/test_drvData/lof_genes_v1.0.txt create mode 100644 tests/test_drvData/vcf_info.txt create mode 100644 tests/test_input_vcf/input.vcf.gz create mode 100644 tests/test_input_vcf/input.vcf.gz.tbi create mode 100644 tests/test_output/input.drv.vcf.gz create mode 100644 tests/test_output/input.drv.vcf.gz.tbi create mode 100644 tests/test_output/input.genes.lof.vcf.gz create mode 100644 tests/test_output/input.genes.lof.vcf.gz.tbi create mode 100644 tests/test_output/input.muts.vcf.gz create mode 100644 tests/test_output/input.muts.vcf.gz.tbi create mode 100644 tests/test_output/input.pass.vcf.gz create mode 100644 tests/test_output/input.pass.vcf.gz.tbi diff --git a/.github/testData/input.drv.vcf.gz b/.github/testData/input.drv.vcf.gz deleted file mode 100644 index b82b1feccef63df80dca39e51e81a25676b72254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26327 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 diff --git a/.github/testData/input.drv.vcf.gz.tbi b/.github/testData/input.drv.vcf.gz.tbi deleted file mode 100644 index ada869b39b57ca26ffaaec8e5dbdccc63e07f068..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1757 zcmb2|=3rp}f&Xj_PR>jWOpI^O?B#QG6kxlsS4c`Yl!_O8@k#{^g$wCKOF6npGrbY#-bcd@gy} zR?i-1s~tO^9R7YYcYdG#Cf6TpLhaA*`!094%59R0CpFO%eX~{f%A7Q`s=IA=PrG?m z^?&{O$M335qrdW@*z-xhhRJKa_b-P33=HyUK_JEW_O4-;6EFxK)OtxByyny-mYMU2 z)kVOONlw9iqqn$zg1EpN+wSKd80H=LE;DWWM&qe1`3XO7+`OrMX8ygj_VXd)K+FCw zpZhB&E_hW|{j-a!#U56PzyJO>ZQGjU^>Yc#lQOte#!l< zIsgCs;j(F%M%5h9c8J)lh%IPtFuXlu$aN@yhwVYgYr{LXO%K*MZSPxq{%U{?1W-nDGe{`E-9yKa7o>=<=R_6?r%P z{qYZleQWl%?EX^wU2W5*^3}xz!qe#Y&A)H>Hoo5ZuF|f(;4Z7~=OXbhq0dqC*(8;p z%=d-d79Pgt$A=7W&mQDtG8ACF5V(bLb;Mf-0qzfKCk`ofnBHvYVy(O_rE~Z|PQd%B ziRJ=wKcDz7x;gi@hBLC$LG1fQQRk9H4Yk(s&%E3BvUJ+dy|PxZyXL0Hz5i=>caGAr z{P(ZtdDi&tKU4SiYQ27U_;hSxfNm%OH7Dygz4UwSB<;Z3cOp~gMFnZ124Kh61{8<%gNZvHMG?pC-?G{(vNHMKXUSC%D| z*WM8953b$4?~Pgh?@i&C|Ft0n#izI2*%{xYu=%tDn1K`-84NfW3{*HZKP0T@YU7!4 hR_D{-u0$GSq1vxmKf-6&dOpG|y`>qL!Sxx40066O|7QRI diff --git a/.github/testData/input.genes.lof.vcf.gz b/.github/testData/input.genes.lof.vcf.gz deleted file mode 100644 index 5f27adc79f57290e817de6065b8ad1f86a9ae1e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24729 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 diff --git a/.github/testData/input.muts.vcf.gz.tbi b/.github/testData/input.muts.vcf.gz.tbi deleted file mode 100644 index 5abc640432ad13f283c586de9688156b1475324d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmb2|=3rp}f&Xj_PR>jWKN#Mg-pI-1D8PEb)-hY);E4|cAp%bgE}dXD-pDAN?7fk3 zBl~XS!tY@gdrvUkJ8-7i-uU?2eJ|Ptsy24_uT+yizVZC@*EQG9xEfDC8?$_8j@+y0 zx|((GmVXHeyQ%c&THdV9@9t(_NmKEhL{;=JS^rz2gp;7|>N&P%H-An0e%I!1U3mS4 zdlOKsk*s7s`zi4X!+!<_c{GpzV|aV_ASaU{(Bl_pC$TD-DdaIKb%b+&$P+Gmc$DqP zYSxHJtPzdUP8}@V1rJ##u}@z4@P9;Z-tiawK)yZ`T_nqB*Qm=Z)v;SrD z%J!d6jw<)S@6k{9eRr;Yo_a1ycjxNqwcDO-+VANJ2 zy*z^FgR8vrovrh$rQ<&Da>lOv&r5a#AEOJ{yr0ML_NXEwg8>JF!K%Qfu=5{QC3H00 jKJ)15dWmhhx5-1-*Rw6Gm~mv`Ow7=hW?%-VIuHQ>N_-D7 diff --git a/.github/testData/input.pass.vcf.gz b/.github/testData/input.pass.vcf.gz deleted file mode 100644 index 4ff50bddc2d1424b6e598ab611b206cceba6a204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26078 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 diff --git a/.github/testData/input.pass.vcf.gz.tbi b/.github/testData/input.pass.vcf.gz.tbi deleted file mode 100644 index 260b2a33f13f4f7a80bb02183e9d5fd75583f432..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1777 zcmb2|=3rp}f&Xj_PR>jWjEry3?dD{16kvPsbz)@m#F-QQE##+5aB!t5JyVjHeYf5T(^rfzFyi4(`!M`l{5FRwn+UA-%&-H^@D-SD{Ka>LCt zHX9`u2f5|QI`59yP`l*l_LrXn^kSc#4EtgGz4Vuhz4zbmHkJ35R{dS~JU(*O_3GC< z-#v;}_MD_bJ9N_iFT>jXLiP;*85rczLf{C)+fy4kTLJ`JFRo9GXiCt~StOB@##ojt ze7j*LZ)9JmyqbWyxxl&RhX+zGU0PRsiXx}pPxz~d#h;%nzw7CI_T9fheo=06#FF3p ze7F4Hzj&7vveJ{+E0~&96nwFH;x5D6+lE|+97I?ygm$#{u66Ab;_R3@;ac~S6SjLA zV%I&qy6K^?(6-H7hkkFcnK4(}Co6A$_$hbF!~ESt!~O4OT~f5(HZk_y!_Tt+Q|-#P zhtIvnhwO4N`%nFI+k>05BfhcxRn{qIy>GQ?llh$MJ@8onbC5IIMHIX-UTI6 z5!MTV#*R4${6)A zyP^$l0TSa=d~W#tVgaYsMdsc&b0@~ky;N=7zx(UXlGB*(M$!fhu7A7c2E1GUZ1?K# zrABFAclKTOz4r4{ZN9x%QzDCXSywcPi_Y_4u}}wAcCGDQkZ6j`y`QkMnBf z?rw7alpW9U?~o<7khsV2_Uu8&S^6 zF47+!%|3nm@07TekPq&kFhf_G0h#ND6bpia(i$`EK*6 zzUd-za^Km=BX3RSlup0D|Fe=^`tF)?Z0W7N@5Ka9=89Sm=eDl#${a4;AIC9N#| ozAE8F!_6~~uAZ0JmV2A(D11FzZJ~3Y=OfG_U7CRzT*rY30AIz_Q2+n{ diff --git a/.github/testData/input.vcf.gz b/.github/testData/input.vcf.gz deleted file mode 100644 index b87a8ff7d37e63536fd378e09fe9995ff1a38da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26832 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 DZd856 diff --git a/.github/testData/input.vcf.gz.tbi b/.github/testData/input.vcf.gz.tbi deleted file mode 100644 index ad111783fdff1c5ccbedc0f443ac6989e57bbf1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 zcmb2|=3rp}f&Xj_PR>jWx{Pnn*?O@!3b0*>V-`G;Qmm~1;5^rAr4@~vx|>fbJzJOX zM)Al25B&$aXZE(be-JxYQp);@v*r4Q`-`)dbw|xP>-Ku-l&SyvW*xqnCHMXNw||Mt zkCmOhJFD9Cd$wP;98aXZU)zfLd8eZ6AFS(sc>3MTDv4jEqWk<8|F0DMdfR4B@8bW4 zomF2A=4`LK)~~+yzfkw{|CaTO|JY1_Tf48?mUs8H^H$$0?fUE9P5qrO_xJAG?|zou zDxQ;Qho0>JD1GDBrE?7b85rczLhB^M+fy4kTLJ`FF1(+b$STNyA&A)7xy{vm(eEW{IU(me&=ifh1oH`Mq7|B9R!8dvDIJ#w%Hy6I*KV6&D zUTgGy($>#AqUVPPzMWA2KwMQYp$1z}JYslzb|Ww-1b{)Yg>m->D}gl!&KwbHdF&uC z+h7}$uZzx!FPF3rw?hXR1HEgqeIg2Aeb`9^BP2StS@KkJ`ISFQM-r#$Ob#rbz%JoMN9`Ty}|nKSE)%VKks_p+SRKu`E>HRRch9~ALpbC9*tgaoqB!s zobTWN{jaqvL2?6W5r9ME{*BhDr?*`9b(y$k)*M%xZ|gVbeg2&uccfxl_d;i+DF1&< z-DdZ`OW1te$?*25Auodg2ZKRR0=KQTy0o0ngm0Noev2O7mV2Ap==ZDDjAyF(D_1_k OEZn6Tn87t8hyVc9{S3kY diff --git a/README.md b/README.md index c91c900..5c67bd5 100755 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ This project hosts scripts to annotate VCF files using user defined driver genes ## Design -Uses bcftools and tabix from htslib +Uses [bcftools] and tabix from htslib ## Tools @@ -37,18 +37,18 @@ Various exceptions can occur for malformed input files. ### inputFormat - * ```VCF file``` snp or indel vcf file annoated using [VAGrENT] - * ```Driver annotation and reference files``` please refer the files in annotate/config folder - * ```lof_genes.txt``` list of known loss of function [LoF] genes - * ```driver_mutations_grch38.tsv.gz``` tab separated driver mutations along with effect type + * ```VCF file``` snp or indel vcf file annotated using [VAGrENT] + * ```drvData.json``` file containg paths to driver annotation data (read from deafult location annotate/config): + * ```annotate/config/drvData``` folder containing driver annotation reference files as listed below + * ```lof_genes_v1.0.txt``` list of known loss of function [LoF] genes + * ```lof_genes_previous_symbo_v1.0.txt``` list of known loss of function [LoF] genes referred by different previous gene symbols ( to make sure all gene synonyms were mathced with input vcf) + * ```driver_mutations_grch38_v1.0.tsv.gz``` tab separated driver mutations along with consequence type * ```genome_grch38.tab.gz``` tab separated chromosme lenght file created from genome index file - * ```lof_consequences.txt``` consequence types to be considerd under LoF category - * ```vcf_info.txt``` vcf header and INFO tag + * ```vcf_info.txt``` vcf header INFO line ### outputFormat - * ```input.drv.vcf.gz ``` output vcf file with DRV info tag - + * ```.drv.vcf.gz ``` output vcf file with DRV info tag and consequence type if known ## INSTALL Installing via `pip install`. Simply execute with the path to the compiled 'whl' found on the [release page][annotateVcf-releases]: @@ -131,6 +131,7 @@ pip install --find-links=~/wheels annotateVcf ### Reference + [bcftools]: http://samtools.github.io/bcftools/bcftools.html [VAGrENT]: https://github.com/cancerit/VAGrENT [travis-master-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=master [travis-develop-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=develop diff --git a/annotate/.abstractAnnotate.py.swp b/annotate/.abstractAnnotate.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..875553d747d46c611555563c11d7b5a242d1b546 GIT binary patch literal 12288 zcmeI2&u`N(6vtie+Ys;vm<=gyRhngG5+EVbAt7<##E;7akrO+uX%c6)(`mc#@9+n+dp1@ zJtL#<4+$~Jt&t1=ZDdRr`!}b8@#sQpnAgT?5t>vpn@*$XPN)UTIkPM*xQ#+9Sg{xF zhi>C=B5iDy%1y}1QdwrjJk8GULzX};mfEqO99Ab6ZjO^kVC@NPkkMY${M2{0uhXkn zo~=C*1b_sP01`j~NB{{S0VIF~)`@_vI^;DJe90Gm&0jk!SO16?B!C2v01`j~NB{{S z0VIF~kN^@u0!ZLLB)~W!*#;pWK<@wl#rOZ`EkZtlK7!tX-hvK61JDi74yXe<+a%-- z=oIt>)CX;WHbLJY=NF&*y~~dS2_OL^fCP{L5{P+0p!2(7>PqNtZy3WG=);b?J<`P86f7Ukgs7et z6}?Ai$4pPmVc;Xdi(ieZwp{8ZUmIApaXpV+ANZ1yYdIIXiT=s`%Bb>pw~Ma2p=~_Q zWGjWeGI;RXStdjBwVl0_y7F&?#x0<$y~3FH@qqkMYjoZ))!}gVjJ(v6T)vM>LgRf@TdmH#mOt?F=Zt;#K2F+wlWC`W zV|2`dds)`G>6(Hq$wu2)H!R&{_WtkUg))~^7>-ZaNdD#RQ|%4`T_KO=9BBq- IujW*BRcPG2}XAAky$~Nzi$PrpeKc0Sh0jnaq0dp!5!l>M3#8 zkIvW@v3qB|{GLA_ZapcpIc`*vG)w8M&e>h}*Iv3KfBvr7{NFX#e%jQWvx?8S_3qIE zDO-!OTYuiQ{f|2hwuoe+Uh`6nnBtKutM14CHp~59yQ_b)`Kh1Z8D>vvF@LH;GoO_&KzGS1B-@MVGq7N zdnDiWDqd3bob<%%?wRjf`(LD;uPi$`FYo34x#b^gE3$T*7?Pe$8!m31DhDr?X7>f!Y7tz>2$@UUwf8rUpROBUf%PuxHSL!!s}!`;SV-1 zXEMA!YRJpLz`?xX=kjWZy9_qTIU^h;BmcpE0S0K{~d=_OZ>CU-!WDEcWq1NNuA2x za>V5pYQDWDZ1*U2~lh%9Y^LTCQ zI+(FVC{}}gb0F^|y}Aujs!L4-*d3!)weD?W-zK&6_v}yE(+;mZ-^q=@)kYSw2i3HEh9eODCAUz4}hv*EY9&3XU2ezIR%V1Ja4iGe{L&9~AF%wW%h F2mqp4a zTjW)F8%$fy7;6}LHFf30vu z1R%d;GXWc01)v2GRick6pw*C7Ze}2I-TYq}7>s{c2zJYiT^km9MQ&n;J~YXw)-Y$0 zdB5SZi-k4yHxf;aj#@_tB@Y-hlj%WeIphQW3sNHJ5htFlXfxR#pP9npl)u4Vx#_a= z@gD>{`u+l^i*HWWiU?vSNrEritWJC(NyS6_kF>ErkuE6WAcjuL=~l|5^W_+^=%9P&||H$HM!^WuiAh})oWyuDr^4o&C?u~yk%WS!U^X6 z0IK9IWewF*M80)@%taLekM2m@;kYgWqNiwe08j*O7`e;tUo)qj-{6>il>a~81N}&& zY=3V!nlwOEUWz)6Q9_hhkuy-%j8;j8rT%WT_KP!SbKDs^>^SsNyC|KnxqEj8XK9)^ z?JYl1@J>wOm{6G1trJF+y;V`CcwdIY9U&ffzwGok5^uMrPz8=gE*^UJuy{$!Kh7k- zP5F&s1c~PoUTZ+x6Q$$%j5bC(Ewjs_*t|fa7*T$)#E_d>GhjQR7E>0!+aUnC&VUJr zn-1Y-qE7EnLR3l9+SKY?WV)_pp-xI6yBQi{?ZV}DM2~F~&&;?q-SbrrS|mH~|~E@M7Yew;aQ5}!yx0{KFlM~SA%6>7iHpSGdT{nss&VI1d9G$!ElYWO}EAd zYc!v`B9-C9O&u2380wqp(Pj>1HM*{>#?*ZnfAG~3mX%$UzV{?)KbI8sH9p%f`wh7< zMmpG(Q|MR0RsH;KQa^}5vwKfG9IU+XXFyI+LzGa$8_Gz@8Gqh2rme$Us$G0v!9sJI zbOW--HmXU~74gvBEVr5zu^?-sM8*`v?+^MyV;_}9WGAYA#ld1Y-jRi`pE)}`!%~{J zI+e8suM{#UHXT})60gCUcVdSSuRAuTHKu3@@~wt|4^9pEJwn;*6s#NM0&|8|(W*U* zGPO7lSIudFfK_K=xq)Qxl``aBtLZGGYzNKqlNBzIm3xP*Y%moo_ZC~wy`IAwLSAgu zsME$u$dc!p{lsg7W`rE!Jg>t$j?;*$EUPGN#0SNRrG$SQo_9wOr!OTWd&Wy-8&5gX z#le&C(Qqsx#pem_`;hVckf{veA~3<4D}Myzjeh_$j1f8>NWCL5Y~ltbN!anXBB$Hl+MRv=GBp>%0hdDhep+ceRnA(NofjDyE-vSV z3Zk#K0_&OHOY(47?piqFZm>+JFAtx?5LFB`%@4@#?VXNq;G{UPVMR6faemPe&v#;G zuAe>BUb@o>)F3AgTn2JSZ-OL;S_U}B>A8`D@lMk#!3%jGZ00Uj^RSNQ7lmBPN5YLW z=?Nd?QNC-leCXX(-7)wsTF-fp^_M>F<}}MlZI*Dn&mdlC9}79Us;)pU=lHx?$5Anz zN@qENJl=I}l14j4k>0O!=c>8hxXx&&3m4u?!};qb)SaaElwR@8ok}|!9kxYS$wuqu z8-5B^R6H_Ne;qi__hlzs8fAc}sZ<$*ksr#OXZ_T0>rIqcl4RSWkC!xUT#lk5rI zo`JEKEA7oMO{iATK0o`&JvV=O;?C?5Z(O;cAaF|iOg6QzKb|6c+RT#r^c1LW>&tG2 z>9;W!Mc2XAaCvZ`JaEd;-UC_UR(YuP0*KdET@YJ>SaG~GJp-ku@-jANZFFIst>X)m z*Vs|gwRi01x5uu^Hx~x`$%N-Dw!0mh%$~HxC2?`FT3WFpjx?~H)Ki+6W@tL0K%)lL zVHf8rIC|n^;c}6eg4|kADTK?`GP;GOkvwde8s2i*N3M?s<4jRFiHCzxX9~m1>xg)R z-xQ^pmw1@pBBeTbMD`6#6w~z;lHPEu9*&m)9enx2rI5n!A|2~;FkRWuM@wr(=>%JD z \ No newline at end of file diff --git a/tests/test_input_vcf/input.vcf.gz b/tests/test_input_vcf/input.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..f71ab1cf85dcf3834afc7cdd6d9e4f1fcd65f43b GIT binary patch literal 5002 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 U0763o02=@U000000000000~c&`Tzg` literal 0 HcmV?d00001 diff --git a/tests/test_input_vcf/input.vcf.gz.tbi b/tests/test_input_vcf/input.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..28a775b86d6f003cb4dd63a03aa8a4aa1993cbea GIT binary patch literal 1797 zcmb2|=3rp}f&Xj_PR>jW+Kg|{8G1Q83a~xsovIME#6NXusEMJCpftB)k`;Hgpw1eb z_J}24nRYt9d!TF6Wd33A+__G+jURO1{5Sl3kFU6VtIXS}L1n+Jv-qBGsJwZ32A{|pTBXkm4n;q9r7oXrU$trz2u7qBQQa41DAJFRn#Z;~1Jj%msf zw>9=DsVvPfK}_nh~i^B=eT zn}BZ2$+y4X3hV4`TI&B{&(hNM4{A@Y`B!a{?FI|8ld+bJC!XjitwD+C7-%r*|Uo$^E@Y>#& zX(#MI@J={9VHdU_xXbYN>_u?g9_Ur!z0q0*Or-xjngm#@H}Yv;h)qQIc)XjpxZmC;6IHSk5tq06Dkchf6Pka2OIz2Vk-d;V!Gn}8Y`G9Pp1F#w}N z{ie|}OMRuT?QwTg%wO-3e|Px*?V>j@XJh(_Jdyh3yD6tlrsuj$d~>_vsY(5u(CPQ> zzq|Tuj_;L4vg@b$Jx0NccCy%f+sg3vs3Ru>0|(0n?yQ7l&L-8A-#W38+j4JH9mU%- VPrKLrX5}Ny!dsew8C>sy2mrw`_FMn} literal 0 HcmV?d00001 diff --git a/tests/test_output/input.drv.vcf.gz b/tests/test_output/input.drv.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd10b7cc31388dd7bd646ff60493fdcb4fa0ee37 GIT binary patch literal 4482 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 U0763o02=@U00000000000K$Brg8%>k literal 0 HcmV?d00001 diff --git a/tests/test_output/input.drv.vcf.gz.tbi b/tests/test_output/input.drv.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..b292bab24b4f9f12c4c867dbeb98d39591aca71c GIT binary patch literal 1745 zcmb2|=3rp}f&Xj_PR>jW%#3f(8D=p#im*M1oP5qW!h>aFadHdq!DC7ZPP;_D33}enJH$s3rk{rkVai-l|V zZ?8A6+Fh#RIf;hor~i8I$7wei{xdMhqlLk9hPP)oaxyszuwDo>G1FDPop!`tl z!ijY~YaP}eJY%=!Aln&R8L_Pm+%4uCY@ThdH=j4Tf}axi{^XBahRwHS&-147-Ts`R zRJHc1*5<=jw*AKYukGv?d%5r2o;TZ5ciFmq+5c{OIon6;@4nx>*Z--WRlf_x9P96_ zF;m($V)N%zhPOu@IT;){7!0^2Tz32r57^NBAo;gW-O&xXx3`gj_SV}GsZV|%W6tOO z*Ri?k1H;=p(9qv$EE3Fo@I(l|3(H29YJ&{|#mUthxU4q_7*~HNi0Cs87MT1!vGUEE z`(kQtpDSA7{{H{<)&v;m-?f`YYi}3NbPHL#JoKF0>yq+w-@jLi{(aLP+YVEMGoAf8 z;#g9>@wDBW+h%JQ&wp%Do;v+r;$*Y#In%3u*3U1A#iah-ry>#M&fpQ^^|ZBtt}5#3m^z_RPwA zTb5)`&wX)OX`b}!ocH_p?vlo;mI%Q=cbOwN86vQ`{0lIu4ssrH0A`fl1??dU8LCYk z2ZIk(=^WtGIm~8LwOvNrpfE;kdlSpO1D_te-(q0Dx9p`g4o{prdGy1%*HdO4d~CPr zxZ<1qkMYlaf6afo>J2<9VWEBUr}aJIC%cN3eOCoAK@4)0~F_fS&HuV>#HG z{V}*Xfmx~Jkz4l$7U>IIF;PuhZ*gX zq%LaOt`91^uVQ_1&T*4P8gJLmu3qkW>hu4fzf%L!afA|vYxkSq=UAQBqkHUSUBo{1 zZTD3_$8IW%b19zpw~A2uJ{iB|)#JTqgW2=nJ?^#OTV4L{b?)=G`|cfHb59W|H2(Zx zx|FBGk1Z_PfF+0_F9QPy^9If*2lq<~37LG@;(vK+Dv`wiDa!tSl@yC^d++%Ov%r>S KU=S~sof8`ON7wq9lUZCE7mM2 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 N(+p__W^fRK2mrFqe&hfE literal 0 HcmV?d00001 diff --git a/tests/test_output/input.muts.vcf.gz b/tests/test_output/input.muts.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..a2672cb0a061a0cb64fb8c4db908f0ff90bfcbb3 GIT binary patch literal 3166 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 Z=-c;n21SoOJ_~1J2DCH-GdQt<2mtEb3$OqH literal 0 HcmV?d00001 diff --git a/tests/test_output/input.pass.vcf.gz b/tests/test_output/input.pass.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e261bf2d6ae7ac5ffac3b125626a5666ad50ea7 GIT binary patch literal 4233 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 Date: Fri, 3 Jul 2020 10:54:07 +0100 Subject: [PATCH 09/16] working version with tests --- annotate/.abstractAnnotate.py.swp | Bin 12288 -> 0 bytes annotate/formatInput.py | 2 +- annotate/staticMethods.py | 15 +- out_anotatevcf/_bcf/0000.vcf | 81 ++++ out_anotatevcf/_bcf/0001.vcf | 81 ++++ out_anotatevcf/_bcf/0002.vcf | 99 ++++ out_anotatevcf/_bcf/0003.vcf | 99 ++++ out_anotatevcf/_bcf/README.txt | 8 + out_anotatevcf/input.drv.vcf.gz | Bin 0 -> 4430 bytes out_anotatevcf/input.drv.vcf.gz.tbi | Bin 0 -> 1740 bytes out_anotatevcf/input.genes.lof.vcf | 84 ++++ out_anotatevcf/input.genes.lof.vcf.gz | Bin 0 -> 2802 bytes out_anotatevcf/input.genes.lof.vcf.gz.tbi | Bin 0 -> 336 bytes out_anotatevcf/input.genes.vcf | 98 ++++ out_anotatevcf/input.muts.vcf.gz | Bin 0 -> 3112 bytes out_anotatevcf/input.muts.vcf.gz.tbi | Bin 0 -> 629 bytes out_anotatevcf/input.pass.vcf.gz | Bin 0 -> 4224 bytes out_anotatevcf/input.pass.vcf.gz.tbi | Bin 0 -> 1747 bytes out_testinput.pass.vcf.gz | Bin 0 -> 4255 bytes out_testinput.pass.vcf.gz.tbi | Bin 0 -> 1749 bytes tests/test_check_combined_data.py | 65 ++- tests/test_check_input.py | 9 +- .../lof_genes_previous_symbol.v1.0.txt | 282 +---------- tests/test_drvData/lof_genes_v1.0.txt | 458 +----------------- tests/test_output/input.drv.vcf.gz | Bin 4482 -> 4429 bytes tests/test_output/input.drv.vcf.gz.tbi | Bin 1745 -> 1741 bytes tests/test_output/input.genes.lof.vcf.gz | Bin 2847 -> 2800 bytes tests/test_output/input.genes.lof.vcf.gz.tbi | Bin 336 -> 336 bytes tests/test_output/input.muts.vcf.gz | Bin 3166 -> 3113 bytes tests/test_output/input.muts.vcf.gz.tbi | Bin 634 -> 629 bytes tests/test_output/input.pass.vcf.gz | Bin 4233 -> 4226 bytes tests/test_output/input.pass.vcf.gz.tbi | Bin 1747 -> 1747 bytes 32 files changed, 622 insertions(+), 759 deletions(-) delete mode 100644 annotate/.abstractAnnotate.py.swp create mode 100644 out_anotatevcf/_bcf/0000.vcf create mode 100644 out_anotatevcf/_bcf/0001.vcf create mode 100644 out_anotatevcf/_bcf/0002.vcf create mode 100644 out_anotatevcf/_bcf/0003.vcf create mode 100644 out_anotatevcf/_bcf/README.txt create mode 100644 out_anotatevcf/input.drv.vcf.gz create mode 100644 out_anotatevcf/input.drv.vcf.gz.tbi create mode 100644 out_anotatevcf/input.genes.lof.vcf create mode 100644 out_anotatevcf/input.genes.lof.vcf.gz create mode 100644 out_anotatevcf/input.genes.lof.vcf.gz.tbi create mode 100644 out_anotatevcf/input.genes.vcf create mode 100644 out_anotatevcf/input.muts.vcf.gz create mode 100644 out_anotatevcf/input.muts.vcf.gz.tbi create mode 100644 out_anotatevcf/input.pass.vcf.gz create mode 100644 out_anotatevcf/input.pass.vcf.gz.tbi create mode 100644 out_testinput.pass.vcf.gz create mode 100644 out_testinput.pass.vcf.gz.tbi diff --git a/annotate/.abstractAnnotate.py.swp b/annotate/.abstractAnnotate.py.swp deleted file mode 100644 index 875553d747d46c611555563c11d7b5a242d1b546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI2&u`N(6vtie+Ys;vm<=gyRhngG5+EVbAt7<##E;7akrO+uX%c6)(`mc#@9+n+dp1@ zJtL#<4+$~Jt&t1=ZDdRr`!}b8@#sQpnAgT?5t>vpn@*$XPN)UTIkPM*xQ#+9Sg{xF zhi>C=B5iDy%1y}1QdwrjJk8GULzX};mfEqO99Ab6ZjO^kVC@NPkkMY${M2{0uhXkn zo~=C*1b_sP01`j~NB{{S0VIF~)`@_vI^;DJe90Gm&0jk!SO16?B!C2v01`j~NB{{S z0VIF~kN^@u0!ZLLB)~W!*#;pWK<@wl#rOZ`EkZtlK7!tX-hvK61JDi74yXe<+a%-- z=oIt>)CX;WHbLJY=NF&*y~~dS2_OL^fCP{L5{P+0p!2(7>PqNtZy3WG=);b?J<`P86f7Ukgs7et z6}?Ai$4pPmVc;Xdi(ieZwp{8ZUmIApaXpV+ANZ1yYdIIXiT=s`%Bb>pw~Ma2p=~_Q zWG +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##bcftools_isecVersion=1.9+htslib-1.9 +##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR diff --git a/out_anotatevcf/_bcf/0001.vcf b/out_anotatevcf/_bcf/0001.vcf new file mode 100644 index 0000000..1eee329 --- /dev/null +++ b/out_anotatevcf/_bcf/0001.vcf @@ -0,0 +1,81 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##bcftools_isecVersion=1.9+htslib-1.9 +##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR diff --git a/out_anotatevcf/_bcf/0002.vcf b/out_anotatevcf/_bcf/0002.vcf new file mode 100644 index 0000000..11503ad --- /dev/null +++ b/out_anotatevcf/_bcf/0002.vcf @@ -0,0 +1,99 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##bcftools_isecVersion=1.9+htslib-1.9 +##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/_bcf/0003.vcf b/out_anotatevcf/_bcf/0003.vcf new file mode 100644 index 0000000..11503ad --- /dev/null +++ b/out_anotatevcf/_bcf/0003.vcf @@ -0,0 +1,99 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##bcftools_isecVersion=1.9+htslib-1.9 +##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/_bcf/README.txt b/out_anotatevcf/_bcf/README.txt new file mode 100644 index 0000000..0c4a755 --- /dev/null +++ b/out_anotatevcf/_bcf/README.txt @@ -0,0 +1,8 @@ +This file was produced by vcfisec. +The command line was: bcftools isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz + +Using the following file names: +out_anotatevcf/_bcf/0000.vcf for records private to out_anotatevcf/input.pass.vcf.gz +out_anotatevcf/_bcf/0001.vcf for records private to tests/test_output/input.pass.vcf.gz +out_anotatevcf/_bcf/0002.vcf for records from out_anotatevcf/input.pass.vcf.gz shared by both out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz +out_anotatevcf/_bcf/0003.vcf for records from tests/test_output/input.pass.vcf.gz shared by both out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz diff --git a/out_anotatevcf/input.drv.vcf.gz b/out_anotatevcf/input.drv.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..be4c4f933e1e7a8edd9294c644bdd7af0f0ef988 GIT binary patch literal 4430 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 U0763o02=@U00000000000DwVrb^rhX literal 0 HcmV?d00001 diff --git a/out_anotatevcf/input.drv.vcf.gz.tbi b/out_anotatevcf/input.drv.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..3597e53498439bf71aa0ac4f45e0b48e950dc1cd GIT binary patch literal 1740 zcmb2|=3rp}f&Xj_PR>jW{~6w%v*uzl6k)ya<7G^9D@W4HdcgRB;wX#&>b1x!2JV@`PUz0O@M?36KWcc5hW{-V%#m!Deo8Fm_W2QJB*Vzl*f z=BYd9gY}Z+oOjD?sD5(LRiD3>fAiW8yWh?J(;5EtSMCJc_r>w^U;jQ|`R?`3uY2Ep zx;;_Fa}w>)llgTFTdOMsfu3cMNAv$HhPP+;axyszuw4k;!e}k<@B_Oe3-d!Q0iHDn zi_WZZ*u9a7+h7xeu`qwTtL_7)hrBxdKX2rlhaIlqr^LxW`R}=5^YFIk3%!1y-FaPb z?y8{G>P4>@UK9jikcUSzqmq*{nT)(Nm_tX2#UoTNYF6XZJ z%hO!J*t|N8;q6gJP6h`K27|{OX*>V9>NO;=A3Xjo@=s6V?QOYapz8nOMC!AvVeXk+ z{|KA2-ZQ+tvk?>ntQU3~U%un8fyq+Pkx$2Q1B>$O4V=~n8^pCYasq?@sf97CVWs@E zirOVaI=;v#0F4FRGPt^Ms-S3Y5me{{NQ}*zjWjnQZf6>d`l~WY=?&<&9YvnLY2pXia{|l#;%hfN~ z{JVqU?Wv8t4haHn4;Py>$^HvcS#W;^WYgaN-@fG$r5B5TK9%$P8W|nL=I}3wh_ZETUVGqx7oXq} zpAAghhTB@T53BLKIdSBQ_3_j~?GF!lb@>1JaeoeecR3v%OQ@F3ncV$x?lsNQ#n*FF z*2h-JJlcPD_ZREap?4Kg)dBtSxqO$pMmg)#c@OsR-`?HyTWwR>`$^euC^3iO-Az_s z>+JULowxM-=Ryu|{fyb$_b%8TQ;yX&C+)xSrnSHMjLp-WjBoGmHyX-9MCd3O&l>yI%Wd^I~GAMP%UI8qI_>F51#tJAAH zUxeP9rdgdcX>Z2)TB*R0b>VOKK2~}9^Z%c}COJm<{eqCaKRdtWs`;^Jk4x-z?h9ML zpY&5N(p-O$?Rm$|&InZ)fdP_wq967BW8CR02WS7TP(Bs-_gwAXyL)b5-#yX-EU%>*n8DQ- GhyVa1yX>q0 literal 0 HcmV?d00001 diff --git a/out_anotatevcf/input.genes.lof.vcf b/out_anotatevcf/input.genes.lof.vcf new file mode 100644 index 0000000..5f518c3 --- /dev/null +++ b/out_anotatevcf/input.genes.lof.vcf @@ -0,0 +1,84 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Fri Jul 3 10:17:10 2020 +##INFO= +##bcftools_annotateVersion=1.9+htslib-1.9 +##bcftools_annotateCommand=annotate -a tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV .//out_anotatevcf/input.pass.vcf.gz; Date=Fri Jul 3 10:17:11 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_anotatevcf/input.genes.lof.vcf.gz b/out_anotatevcf/input.genes.lof.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..f48f029a70e7ba77af6333d78c6d424904505cf4 GIT binary patch literal 2802 zcmVPgDqDvVqi#_ z%Yw`#n@UlQXh0hwX(fTjDgXGKZUjccT4C=zWIfm;wYtA^`}*`b;^W7a=hIafZ%Jy+ z?CxF_@edzAcKi3v=ZSUO?^xsZbSiXc;>KQ-dSPIFX!|~bRVj@V6p}RDuPbNc}zRp)0nI& zdL#+*PXbItf+Y&VSEa1N9X#{`m#7mi5V(`gN z+%cdN|&5Sw+KA;~X8gIRnZKEg-qcA?O2|ge$&Ste3&=l=%=*i(daad24Wi?}1M|$QJ%vB+MQLB_cN9 z49Eh71PVT;3B;G}8i=b;31l^lAOt_qe| zSSfKg$Jj4+X+b@h83z8-NzEKrF7sm{%R9SmxQjETFAP7CtDd*6eBv$8PCiH-O$Ke} z5L8DP?zRgWTUcms9u#DC{g9-ERC#vX@KP$v03547?2ZoQ>G&G0oiK%b(qZRBe)*ud z{1ru}yDiheCbQ22IJlA!k}RCP>nw+`jIU^38 z5$boCwEqO*V}Pc^aY66lNpb0@I9ZpJ6^HX5s%ErYz(T}o#iz=O;oph?b)P_B< zO3@0`fNF2)0c(FeYm^XK{<=$`VuWVG_twFdRSJpAx}&UNNKmo~ACEfiN$kBG@Og#o z`)g9gD+&dC4HL*8xxN=g%xvCMK)G}j${fP74Cul&EBa&bK7Vk-=^wFtRuudieP(1G zGZ`JaB0E1t?EvV>+p7ZD*EfLie9-}gpz-p;T~dyEO{q1@Y~;I!xu3V4%=)X9x3Abp zM={Wf9^1_~Nt?C@VRKMeZAwgBlP z4c*YUzV@cVlvl4qvZdBnXWFmZqx;cZlC=3km_ixsQcEldb{+c} zcFCS@Nic(xnjvEmDih-*k%9#nfyNR(`ZAd9Ko00-yRV#M~E~Tca$eN+5xDuh1nx>=};L2(p zN~x)tIyQ7%$!)omnYs!;Sg+)^TuMw;H>76MtlXh;DKCN8*i`jOLj0pVOX!j+LDsH9 z_-CmKhAbN@t^^pAs-SE7D|BQPYlo!NIvhwcJF8;4qA@$~t%eU}XG|M#e6lha<7UGp z$+nSFvNg=eizsWX5*Q5FO~d#0w6P>9X^`x&YsgsE=Rib5SF}b});Czuzop`efV6}k zpXUc+R!Gp9yAmTGrtIAnJ2c_Az7LtDL9|O}cGtQU?}Xz`b_(BSB3>ShNldoZ?c{TJ z{;A)dT9OE17*G16$$aqO%qMN5>AvDFT~pKRBaq z7skvC0Xl*M0!))6EU^32q^5RvSJeL8&ND+2=pj-OW{UXIB-Wi|X0f-Bk^eFU3JvQP zi>7E^7`)r=t<&qv`Cb$JaJPh7$A?f$lCZE?b-iX~UqWDbWu56Dxcn)<0e-E#wde(& z5LmJXnbFk61=$L~qK83yC~ROgP{uk16+WI29qSrlYh~f*t5RN3dCPCGiY(wy62YJK zY0j}*7ondL*Z&p5gPvf*xqkbDerb4AaZlrv>G*pdm(M+Z>E=A`3O-guO_VNt>=JP9 z`*sO`Pvh(j-k9?C+f0HwW1bewAr) zgLoe8#vc0n&PPZ=SZZOTg(W0QvXpy~F_~S_=XGN6NQ{nsnC*jkA95y@P~Ag+LCl86%(gxxX&B9YXly^A=jZcb5~r_> z!(QYY*roaL73?F*zgEtV2dwLa&j*lM-@K+HcpW0K3dQtWis~-1zf490q09a_BY^{f zpOM&Tz}^4{aC={Z#=e`ciX6@&$DwQE(X`g@)ZiegweOwU&kybU+TqKY8k1H#yp63L zPLbN7_56XCi8U3fbCx-4hKZM|)O731l_A$Lrp-Db)T}RcNusVH6W49l?3z;(Ym9ZZ z&e$@Ho59$^H@&f?iz=;S^~UL0w%u^p&y6!?CyjnH=sGtr8`F27Ca1tdG;2j#W}Jju+5jx(@{%eKj7Nz6064X zQo%aA#C(RFjbhEjFPFv*(BjC7o7vYtkKVvS>ptw(dQPj`{-xEm;kO6B&M&PA+)vf;f9%>iGYTaD03VA81ONa4009360763o02=@U0000000000 E0Pq)9XaE2J literal 0 HcmV?d00001 diff --git a/out_anotatevcf/input.genes.lof.vcf.gz.tbi b/out_anotatevcf/input.genes.lof.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..8558cae9a298a97f83aa9850255b0536d0e3f22d GIT binary patch literal 336 zcmb2|=3rp}f&Xj_PR>jW9~j==*~ojyfrm99{?rD>MGgVYE)!W7G|l48SRvV}s3FlI zDAB-qqOeoR$gwN^WZk6m+Yi~l?_b%~ac8CR^z& z-n*y2E9O7iKksXS^CT5dd? +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Fri Jul 3 10:17:10 2020 +##INFO= +##bcftools_annotateVersion=1.9+htslib-1.9 +##bcftools_annotateCommand=annotate -a tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV .//out_anotatevcf/input.pass.vcf.gz; Date=Fri Jul 3 10:17:11 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/input.muts.vcf.gz b/out_anotatevcf/input.muts.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6e0935f36ff031176e9354196e5cd2cff9a41d7 GIT binary patch literal 3112 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 CF6D** literal 0 HcmV?d00001 diff --git a/out_anotatevcf/input.muts.vcf.gz.tbi b/out_anotatevcf/input.muts.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..abcdc2cef7aaca60f46399d6a619761a8f4c5cc3 GIT binary patch literal 629 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 W{{{d;LjnLB00RI3000000001|12vfd literal 0 HcmV?d00001 diff --git a/out_anotatevcf/input.pass.vcf.gz.tbi b/out_anotatevcf/input.pass.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..38a8bcf6e621e737a3a28a02469548ac02197d23 GIT binary patch literal 1747 zcmb2|=3rp}f&Xj_PR>jWe;MAMv*ltk6kxls=2j&etKgcy>8?3CF09tv)q-pGwkAAH zwdo5lG{5Qk#^wO`neQifB#UC+Zz|(h7#I>3Ij`>NsuiEVnspiWSoT?VT6WJo9y3L< z{j$-c7a~zdoBkT>?km51>8-*|p8d}^dd{Em{nFpqzmJMM{{D*FU;lJv{QI@{OQ+qJ z^PHqYL-g+@dt~JKyA1ys8067>zn9_dDMK!Y0*PY}?T;I1XhyElOPDx2Qub)8%n_%3 zj&In$?)m!l%6k2?sk_`LapS*(`;@Tw@RRj+t25_kPb2sqt+Ozju01*L%xrxA`%QzO&zZe!^SP zHMLFY^QY}?`Zy`_=l6_lJ@ACHqwmTgc?q&S}omRE{cV`^@$0@fk;mTO zne}FR+|TcO{+8f3j-YJ%JK@b$YTVd-cM6#IHgX;c07mln;8#2|m04Ig%ic|pymR!L z-UGM3M+`rIa2fipx_@Hl2aAID-NyyyPXKx4|KaZ*B&J!$k@t`RFrvI88oHXgSQjKP zw}?b)&TO2=8KIXyXz?7#yTMV*G0d(+SP+tnX`D)4@S%1?g1Pg`PL=I)h0z0Uur z)w7-Jlvee}Wp(Y&z1jc$&{hU#fk2TkdUYqu;NMnJ&5> R@_d9@a7!~VgKIGm0RY?n<6r;) literal 0 HcmV?d00001 diff --git a/out_testinput.pass.vcf.gz b/out_testinput.pass.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..22b2217d36357185cf59385d4fda27c825ae1438 GIT binary patch literal 4255 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 F5grlwp)>#h diff --git a/tests/test_output/input.drv.vcf.gz.tbi b/tests/test_output/input.drv.vcf.gz.tbi index b292bab24b4f9f12c4c867dbeb98d39591aca71c..61bc63c6d46e2a417c8a57001369406bc89932a2 100644 GIT binary patch literal 1741 zcmb2|=3rp}f&Xj_PR>jW{~6w%v*uzl6k)ya<7G^9D@W4HdcgRB;wX#&>b1x!2JV@`PUz0O@M?36KWcc5hW{-V%#m!Deo8Fm_W2QJB*Vzl*f z=BYd9gY}Z+oOjD?sD5(LRiD3>fAiW8yWh?J(;5EtSMCJc_r>w^U;jQ|`R?`3uY2Ep zx;;_Fa}w>)llgTFTdOMsfu3cMNAv$HhPP+;axyszuw4k;!e}k<@B_Oe3-d!Q0iHDn zi_WZZ*u9a7+h7xeu`qwTtL_7)hrBxdKX2rlhaIlqr^LxW`R}=5^YFIk3%!1y-FaPb z?y8{G>P4>@UK9jikcUSzqmq*{nT)(Nm_tX2#UoTNYF6XZJ z%hO!J*t|N8;q6gJP6h`K27|{OX*>V9>NO;=A3Xjo@=s6V?QOYapz8nOMC!AvVeXk+ z{|KA2-ZQ+tvk?>ntQU3~U%un8fyq+Pkx$2Q1B>$O4V=~n8^pCYasq?@sf97CVWs@E zirOVaI=;v#0F4FRGPt^Ms-S3Y5me{{NQ}*zjWjnQZf6>d`l~WY=?&<&9YvnLY2pXia{|l#;%hfN~ z{JVqU?Wv8t4haHn4;Py>$^HvcS#W;^WYgaN-@fG$r5B5TK9%$P8W|nL=I}3wh_ZETUVGqx7oXq} zpAAghhTB@T53BLKIdSBQ_3_j~?GF!lb@>1JaeoeecR3v%OQ@F3ncV$x?lsNQ#n*FF z*2h-JJlcPD_ZREap?4Kg)dBtSxqO$pMmg)#c@OsR-`?HyTWwR>`$^euC^3iO-Az_s z>+JULowxM-=Ryu|{fyb$_b%8TQ;yX&C+)xSrnSHMjLp+rjBoGm*((VOyU zZ$cL}_v!|JyP;xzan5gxMH;c|XH_2$JoWki&)+NK(_w1y`)QKOe)IbrtMhu!w!f^4 z*r#50PxW)`rm{Gf;(2?k+6kC(GJeae$9vBOvFE>g+&hDBRr$NuxzFG3yZ3j=J>($& z^MmQd{S#W)f}#~telT#bYjW%#3f(8D=p#im*M1oP5qW!h>aFadHdq!DC7ZPP;_D33}enJH$s3rk{rkVai-l|V zZ?8A6+Fh#RIf;hor~i8I$7wei{xdMhqlLk9hPP)oaxyszuwDo>G1FDPop!`tl z!ijY~YaP}eJY%=!Aln&R8L_Pm+%4uCY@ThdH=j4Tf}axi{^XBahRwHS&-147-Ts`R zRJHc1*5<=jw*AKYukGv?d%5r2o;TZ5ciFmq+5c{OIon6;@4nx>*Z--WRlf_x9P96_ zF;m($V)N%zhPOu@IT;){7!0^2Tz32r57^NBAo;gW-O&xXx3`gj_SV}GsZV|%W6tOO z*Ri?k1H;=p(9qv$EE3Fo@I(l|3(H29YJ&{|#mUthxU4q_7*~HNi0Cs87MT1!vGUEE z`(kQtpDSA7{{H{<)&v;m-?f`YYi}3NbPHL#JoKF0>yq+w-@jLi{(aLP+YVEMGoAf8 z;#g9>@wDBW+h%JQ&wp%Do;v+r;$*Y#In%3u*3U1A#iah-ry>#M&fpQ^^|ZBtt}5#3m^z_RPwA zTb5)`&wX)OX`b}!ocH_p?vlo;mI%Q=cbOwN86vQ`{0lIu4ssrH0A`fl1??dU8LCYk z2ZIk(=^WtGIm~8LwOvNrpfE;kdlSpO1D_te-(q0Dx9p`g4o{prdGy1%*HdO4d~CPr zxZ<1qkMYlaf6afo>J2<9VWEBUr}aJIC%cN3eOCoAK@4)0~F_fS&HuV>#HG z{V}*Xfmx~Jkz4l$7U>IIF;PuhZ*gX zq%LaOt`91^uVQ_1&T*4P8gJLmu3qkW>hu4fzf%L!afA|vYxkSq=UAQBqkHUSUBo{1 zZTD3_$8IW%b19zpw~A2uJ{iB|)#JTqgW2=nJ?^#OTV4L{b?)=G`|cfHb59W|H2(Zx zx|FBGk1Z_PfF+0_F9QPy^9If*2lq<~37LG@;(vK+Dv`wiDa!tSl@yC^d++%Ov%r>S KU*vZzh%Vt(x)=$WL(6w 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 A=Kufz literal 2847 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 MBcvIa!9fTj0Lub_%>V!Z literal 336 zcmb2|=3rp}f&Xj_PR>jW?-}0S+0DyjD8PEaH01)Ll7kXk=L0E)$4OQSipxY!EigE- zlA-79dC?eyY1fq3&X2D6{Z_A6Ny&fJv(0P#<`-McGmG7~`}*hFxJBDtJHMFTo`3p# z+5AWUW7O{RcurEmhxqQ^*}W@n>bk4t@3W3rY~Nm26?wb%_UWp*e@k}a*GWkB(NSF#Km=kVo^cGsD}Xj+_h(94rRAW2Aqx3$b{g_!gN}nsa+wE()4&&)mArmfKwq N(+p__W^fRK2mrFqe&hfE diff --git a/tests/test_output/input.muts.vcf.gz b/tests/test_output/input.muts.vcf.gz index a2672cb0a061a0cb64fb8c4db908f0ff90bfcbb3..f02b6db949edfae59cd003713942bb8c7d904c1c 100644 GIT binary patch delta 3091 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 delta 3143 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
@n#pju{Cs~}a^El8Efqd4`hOPqh= z&+l$~9?BL@e-g%&FC_}JCy6Cp?Z=)?|D)>4@GtO^@@L6ya5J8-9hRi=qCfT_CJ&$R z6lPY%X%$a#i8qIqLgHLC4&hhf@TJ**64FS)hy~y@(g+ZtIs?FEcY&6O1{$hi3`QU! zC?IVZ4v=IAkmhY8jcg$eL;SXLq`9u=c^T3;%c16~e~TH^m^cb*o_l585X~5zLfWM% z16!B|S!knzx;n6R8Ry^LQ&ptBF!N6fy;c@@i-QbkIhVqU4k|GAsq9NpChv=)+P~n?6sS>hMmFncFzt~i% ze@N-+wu&*mt(Kg6G%rPKzn9f+?wCsB$e(VX1w32R02nS^G09N1>WJ!%Ipg5T^ATKrR07^LnZoswf3j+v`p}^mq+ujY;ZeoIp zyg;P3c#ZSCiemdUelZ>XT@L)we`a_ZSc{?sm-{ffa#kOrN2wY)r$NDOge@BZTm^+R z=F9!QavdXarH&y_?6&bIcH8)IMCiE$|EfJnDaAai03@+8QXxXxdA%uZ>)W%+4jsNM z^G{6*%N@ULuZ$PvvcjB>$EKCz%#xPHrBv-c!Jv5i@}6$x3kaK54AWa>e`q%=|SiT7hiQRge zjOqPYR%4c69BD2a;DNNiTzPoq?O4239E&3EdfvIS)$Y?@a#7cuO}h`XqsYv?>t1J` zqO90tvYGVruYWMnQ~eyW1(MHzo0k!=G_MgC4ikwvM`|NuNT_|@8ByMJ3xCWhMxwmg3OA#b!#U>r)7EV zYTCM9{Z|cB&Kc(zqNYuxABrzm08W|E*cPEFY+;2h$I%tQW+OJcu-S+un_`t$phZhx zx4XXedg3OFJe;AdPM8xIXOV|kRu*`=-@{jcs`z?Iwx0m8b+lYp0C{4TU8fm)p==|T q{q+A7)gMX|O8@{LiwFb&00000{{{d;LjnLB00RI3000000000PObL+y diff --git a/tests/test_output/input.pass.vcf.gz.tbi b/tests/test_output/input.pass.vcf.gz.tbi index db35378d770382c821104b046815164996d3059c..599218cebfb5783a5355a1200208c2d3442f7447 100644 GIT binary patch delta 992 zcmcc2dzrUhzMF%E0R;ZDF*rFhG5lqCd(M`N$xwjp!kSx^Y^;K7{-(R;=(w<2b5{$l z+1r}%G}WdrywLon>l>Q`+-JU@;E^nfdB3TQV_{%OSmeCAr>j z*WNFkc3*DtMpnOx7X;Yw9u(I8WWC+$%=y{V3UU^$&7HCI zd7Iv?-}(CQ+$O1b!qF#lxhJfDZJPzvZUJMV5QBj z=EXZ4!n3nAj{bk<$)ztKS96jp{?4r*JV4hv1^(pc|9sD1@ami0r{C20wuj$4y{GHF z<+a=V2wR}m-P!LwKjE$Dn%buH`P23`eVi2e^Lxg&9=LP<9OMjPe5VC+j5QnM+q=6t znH)t}FWfYZ-oRAP+QG5tM)Saigfz|E#-p-xE1PU)PCker>bM^4RyhxYnX`zV{R-9+Xo&8NXfp)8DHlQ`UEH%H2I& zPw&jy&^7IpWpXP)@N~H*<7W@4fg#h zV3cp~A&NTjA@(=^TqCDl^5B(`S<9=Is#G_>5C ze$L;n{`gaY_Y+ip^6P!t66-Q|ul(tC{zt8z?Odm{sy{BPYj^I={_h|EC)<{SlC**6 zr2U4bN3G81$_J+Y7I8jz`ufeXr+=&CkJ>Chdqoi`rO4DUoycdY1%(2CE5qBPj+_h( j94s5U(*v3(2e8GfFkN&#6qReb(piNiA<&zL-8 z^Nh+fl`{)1bd~%37KZBFu)Xvs-CWm}XVTdZ)$eA1=?oRuzkC0xzTWRE>)(I<9X{{Z z*L%NW(?7nQIC&$h-^2_298c!gF-VB;bWfhhB%-~S;q56$E{6n>){FB~B{Vc=Mzoyq zdF!(+*?C)n(>;eXyjOO9wfg$?QqZz&pne;cC-QH!CvFtc-e0`>@Si<}e9P5t-D-=h z%6qYB@BeR)@>D!0AyEBeM!ljRdqMUXU1xZEdn0Fa0x%4M4P4bWc<44hP-4_>Kgp-L zxj$vA1i#>ay-OQ06Y-Orz&@K$t9ZBzREX?vT#t8V`EzVMzA+%=!r?Ky5nUIV$shMn>4-QAo_ zjv}lVZkk4KV78yx*`d&78_`@E(KvCTt3*V1uEeYx4eR(08%Sp<70KzazuS}h@UFqk zw(k=r9u$%Kx4QKAU3SHgwe68-)_s2QOyd6TO3_o6=9TRe56Ual-;F!*J^b?BtH+I^ z+KcoaS4=M5t?|8V@r>pFFaO>*-+1Ci4dwZ>tq#S>Ca+F>!|z?2w7k^h>!i}pT2qR% zKk=PhU(0l>vbYIx4(Ae-~*6g=SdO{Y6=Wk2qEn7JG0<#6@Yv(lQ z>GQ&8#!nVxkzwBQw`Af%d-n8q!ak4xvw{q;JPC|mL#{&(0zj{Bxi-zxor6Q@%^qjH zM}~WvU)oG|H|!4X$PCI=et-DGga4hW9sVAm5c~hIdg4Jt^_|Z@yTAhQ=C#L`Z(rH| z>ImBFdvmYe%dhi(Z`1!c`{#$hiW3*gvERHSdVTS++{uot65$6q!S;FP9GJ}RZ?=Hl zT0pTy##h!%;f70}*~CeEBHLHb7D#4p+QYxOf9_xD>CStcCq1#>;c>Y{F!fX2nce%& zO*1@SDjHbx<(Ag&+t2=1$p5#$7Car4eDzg+O5fIsUbgeCa#u?H@d=+lm72xY{l6z} zcs|p(6zq0r%3zp8Qvas Date: Fri, 3 Jul 2020 10:55:21 +0100 Subject: [PATCH 10/16] removed testout --- out_anotatevcf/_bcf/0000.vcf | 81 ------------------ out_anotatevcf/_bcf/0001.vcf | 81 ------------------ out_anotatevcf/_bcf/0002.vcf | 99 ---------------------- out_anotatevcf/_bcf/0003.vcf | 99 ---------------------- out_anotatevcf/_bcf/README.txt | 8 -- out_anotatevcf/input.drv.vcf.gz | Bin 4430 -> 0 bytes out_anotatevcf/input.drv.vcf.gz.tbi | Bin 1740 -> 0 bytes out_anotatevcf/input.genes.lof.vcf | 84 ------------------ out_anotatevcf/input.genes.lof.vcf.gz | Bin 2802 -> 0 bytes out_anotatevcf/input.genes.lof.vcf.gz.tbi | Bin 336 -> 0 bytes out_anotatevcf/input.genes.vcf | 98 --------------------- out_anotatevcf/input.muts.vcf.gz | Bin 3112 -> 0 bytes out_anotatevcf/input.muts.vcf.gz.tbi | Bin 629 -> 0 bytes out_anotatevcf/input.pass.vcf.gz | Bin 4224 -> 0 bytes out_anotatevcf/input.pass.vcf.gz.tbi | Bin 1747 -> 0 bytes 15 files changed, 550 deletions(-) delete mode 100644 out_anotatevcf/_bcf/0000.vcf delete mode 100644 out_anotatevcf/_bcf/0001.vcf delete mode 100644 out_anotatevcf/_bcf/0002.vcf delete mode 100644 out_anotatevcf/_bcf/0003.vcf delete mode 100644 out_anotatevcf/_bcf/README.txt delete mode 100644 out_anotatevcf/input.drv.vcf.gz delete mode 100644 out_anotatevcf/input.drv.vcf.gz.tbi delete mode 100644 out_anotatevcf/input.genes.lof.vcf delete mode 100644 out_anotatevcf/input.genes.lof.vcf.gz delete mode 100644 out_anotatevcf/input.genes.lof.vcf.gz.tbi delete mode 100644 out_anotatevcf/input.genes.vcf delete mode 100644 out_anotatevcf/input.muts.vcf.gz delete mode 100644 out_anotatevcf/input.muts.vcf.gz.tbi delete mode 100644 out_anotatevcf/input.pass.vcf.gz delete mode 100644 out_anotatevcf/input.pass.vcf.gz.tbi diff --git a/out_anotatevcf/_bcf/0000.vcf b/out_anotatevcf/_bcf/0000.vcf deleted file mode 100644 index 1eee329..0000000 --- a/out_anotatevcf/_bcf/0000.vcf +++ /dev/null @@ -1,81 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##bcftools_isecVersion=1.9+htslib-1.9 -##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR diff --git a/out_anotatevcf/_bcf/0001.vcf b/out_anotatevcf/_bcf/0001.vcf deleted file mode 100644 index 1eee329..0000000 --- a/out_anotatevcf/_bcf/0001.vcf +++ /dev/null @@ -1,81 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##bcftools_isecVersion=1.9+htslib-1.9 -##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR diff --git a/out_anotatevcf/_bcf/0002.vcf b/out_anotatevcf/_bcf/0002.vcf deleted file mode 100644 index 11503ad..0000000 --- a/out_anotatevcf/_bcf/0002.vcf +++ /dev/null @@ -1,99 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##bcftools_isecVersion=1.9+htslib-1.9 -##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/_bcf/0003.vcf b/out_anotatevcf/_bcf/0003.vcf deleted file mode 100644 index 11503ad..0000000 --- a/out_anotatevcf/_bcf/0003.vcf +++ /dev/null @@ -1,99 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##bcftools_isecVersion=1.9+htslib-1.9 -##bcftools_isecCommand=isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 09:55:49 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/_bcf/README.txt b/out_anotatevcf/_bcf/README.txt deleted file mode 100644 index 0c4a755..0000000 --- a/out_anotatevcf/_bcf/README.txt +++ /dev/null @@ -1,8 +0,0 @@ -This file was produced by vcfisec. -The command line was: bcftools isec -c both -p out_anotatevcf/_bcf out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz - -Using the following file names: -out_anotatevcf/_bcf/0000.vcf for records private to out_anotatevcf/input.pass.vcf.gz -out_anotatevcf/_bcf/0001.vcf for records private to tests/test_output/input.pass.vcf.gz -out_anotatevcf/_bcf/0002.vcf for records from out_anotatevcf/input.pass.vcf.gz shared by both out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz -out_anotatevcf/_bcf/0003.vcf for records from tests/test_output/input.pass.vcf.gz shared by both out_anotatevcf/input.pass.vcf.gz tests/test_output/input.pass.vcf.gz diff --git a/out_anotatevcf/input.drv.vcf.gz b/out_anotatevcf/input.drv.vcf.gz deleted file mode 100644 index be4c4f933e1e7a8edd9294c644bdd7af0f0ef988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4430 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 U0763o02=@U00000000000DwVrb^rhX diff --git a/out_anotatevcf/input.drv.vcf.gz.tbi b/out_anotatevcf/input.drv.vcf.gz.tbi deleted file mode 100644 index 3597e53498439bf71aa0ac4f45e0b48e950dc1cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1740 zcmb2|=3rp}f&Xj_PR>jW{~6w%v*uzl6k)ya<7G^9D@W4HdcgRB;wX#&>b1x!2JV@`PUz0O@M?36KWcc5hW{-V%#m!Deo8Fm_W2QJB*Vzl*f z=BYd9gY}Z+oOjD?sD5(LRiD3>fAiW8yWh?J(;5EtSMCJc_r>w^U;jQ|`R?`3uY2Ep zx;;_Fa}w>)llgTFTdOMsfu3cMNAv$HhPP+;axyszuw4k;!e}k<@B_Oe3-d!Q0iHDn zi_WZZ*u9a7+h7xeu`qwTtL_7)hrBxdKX2rlhaIlqr^LxW`R}=5^YFIk3%!1y-FaPb z?y8{G>P4>@UK9jikcUSzqmq*{nT)(Nm_tX2#UoTNYF6XZJ z%hO!J*t|N8;q6gJP6h`K27|{OX*>V9>NO;=A3Xjo@=s6V?QOYapz8nOMC!AvVeXk+ z{|KA2-ZQ+tvk?>ntQU3~U%un8fyq+Pkx$2Q1B>$O4V=~n8^pCYasq?@sf97CVWs@E zirOVaI=;v#0F4FRGPt^Ms-S3Y5me{{NQ}*zjWjnQZf6>d`l~WY=?&<&9YvnLY2pXia{|l#;%hfN~ z{JVqU?Wv8t4haHn4;Py>$^HvcS#W;^WYgaN-@fG$r5B5TK9%$P8W|nL=I}3wh_ZETUVGqx7oXq} zpAAghhTB@T53BLKIdSBQ_3_j~?GF!lb@>1JaeoeecR3v%OQ@F3ncV$x?lsNQ#n*FF z*2h-JJlcPD_ZREap?4Kg)dBtSxqO$pMmg)#c@OsR-`?HyTWwR>`$^euC^3iO-Az_s z>+JULowxM-=Ryu|{fyb$_b%8TQ;yX&C+)xSrnSHMjLp-WjBoGmHyX-9MCd3O&l>yI%Wd^I~GAMP%UI8qI_>F51#tJAAH zUxeP9rdgdcX>Z2)TB*R0b>VOKK2~}9^Z%c}COJm<{eqCaKRdtWs`;^Jk4x-z?h9ML zpY&5N(p-O$?Rm$|&InZ)fdP_wq967BW8CR02WS7TP(Bs-_gwAXyL)b5-#yX-EU%>*n8DQ- GhyVa1yX>q0 diff --git a/out_anotatevcf/input.genes.lof.vcf b/out_anotatevcf/input.genes.lof.vcf deleted file mode 100644 index 5f518c3..0000000 --- a/out_anotatevcf/input.genes.lof.vcf +++ /dev/null @@ -1,84 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Fri Jul 3 10:17:10 2020 -##INFO= -##bcftools_annotateVersion=1.9+htslib-1.9 -##bcftools_annotateCommand=annotate -a tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV .//out_anotatevcf/input.pass.vcf.gz; Date=Fri Jul 3 10:17:11 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_anotatevcf/input.genes.lof.vcf.gz b/out_anotatevcf/input.genes.lof.vcf.gz deleted file mode 100644 index f48f029a70e7ba77af6333d78c6d424904505cf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2802 zcmVPgDqDvVqi#_ z%Yw`#n@UlQXh0hwX(fTjDgXGKZUjccT4C=zWIfm;wYtA^`}*`b;^W7a=hIafZ%Jy+ z?CxF_@edzAcKi3v=ZSUO?^xsZbSiXc;>KQ-dSPIFX!|~bRVj@V6p}RDuPbNc}zRp)0nI& zdL#+*PXbItf+Y&VSEa1N9X#{`m#7mi5V(`gN z+%cdN|&5Sw+KA;~X8gIRnZKEg-qcA?O2|ge$&Ste3&=l=%=*i(daad24Wi?}1M|$QJ%vB+MQLB_cN9 z49Eh71PVT;3B;G}8i=b;31l^lAOt_qe| zSSfKg$Jj4+X+b@h83z8-NzEKrF7sm{%R9SmxQjETFAP7CtDd*6eBv$8PCiH-O$Ke} z5L8DP?zRgWTUcms9u#DC{g9-ERC#vX@KP$v03547?2ZoQ>G&G0oiK%b(qZRBe)*ud z{1ru}yDiheCbQ22IJlA!k}RCP>nw+`jIU^38 z5$boCwEqO*V}Pc^aY66lNpb0@I9ZpJ6^HX5s%ErYz(T}o#iz=O;oph?b)P_B< zO3@0`fNF2)0c(FeYm^XK{<=$`VuWVG_twFdRSJpAx}&UNNKmo~ACEfiN$kBG@Og#o z`)g9gD+&dC4HL*8xxN=g%xvCMK)G}j${fP74Cul&EBa&bK7Vk-=^wFtRuudieP(1G zGZ`JaB0E1t?EvV>+p7ZD*EfLie9-}gpz-p;T~dyEO{q1@Y~;I!xu3V4%=)X9x3Abp zM={Wf9^1_~Nt?C@VRKMeZAwgBlP z4c*YUzV@cVlvl4qvZdBnXWFmZqx;cZlC=3km_ixsQcEldb{+c} zcFCS@Nic(xnjvEmDih-*k%9#nfyNR(`ZAd9Ko00-yRV#M~E~Tca$eN+5xDuh1nx>=};L2(p zN~x)tIyQ7%$!)omnYs!;Sg+)^TuMw;H>76MtlXh;DKCN8*i`jOLj0pVOX!j+LDsH9 z_-CmKhAbN@t^^pAs-SE7D|BQPYlo!NIvhwcJF8;4qA@$~t%eU}XG|M#e6lha<7UGp z$+nSFvNg=eizsWX5*Q5FO~d#0w6P>9X^`x&YsgsE=Rib5SF}b});Czuzop`efV6}k zpXUc+R!Gp9yAmTGrtIAnJ2c_Az7LtDL9|O}cGtQU?}Xz`b_(BSB3>ShNldoZ?c{TJ z{;A)dT9OE17*G16$$aqO%qMN5>AvDFT~pKRBaq z7skvC0Xl*M0!))6EU^32q^5RvSJeL8&ND+2=pj-OW{UXIB-Wi|X0f-Bk^eFU3JvQP zi>7E^7`)r=t<&qv`Cb$JaJPh7$A?f$lCZE?b-iX~UqWDbWu56Dxcn)<0e-E#wde(& z5LmJXnbFk61=$L~qK83yC~ROgP{uk16+WI29qSrlYh~f*t5RN3dCPCGiY(wy62YJK zY0j}*7ondL*Z&p5gPvf*xqkbDerb4AaZlrv>G*pdm(M+Z>E=A`3O-guO_VNt>=JP9 z`*sO`Pvh(j-k9?C+f0HwW1bewAr) zgLoe8#vc0n&PPZ=SZZOTg(W0QvXpy~F_~S_=XGN6NQ{nsnC*jkA95y@P~Ag+LCl86%(gxxX&B9YXly^A=jZcb5~r_> z!(QYY*roaL73?F*zgEtV2dwLa&j*lM-@K+HcpW0K3dQtWis~-1zf490q09a_BY^{f zpOM&Tz}^4{aC={Z#=e`ciX6@&$DwQE(X`g@)ZiegweOwU&kybU+TqKY8k1H#yp63L zPLbN7_56XCi8U3fbCx-4hKZM|)O731l_A$Lrp-Db)T}RcNusVH6W49l?3z;(Ym9ZZ z&e$@Ho59$^H@&f?iz=;S^~UL0w%u^p&y6!?CyjnH=sGtr8`F27Ca1tdG;2j#W}Jju+5jx(@{%eKj7Nz6064X zQo%aA#C(RFjbhEjFPFv*(BjC7o7vYtkKVvS>ptw(dQPj`{-xEm;kO6B&M&PA+)vf;f9%>iGYTaD03VA81ONa4009360763o02=@U0000000000 E0Pq)9XaE2J diff --git a/out_anotatevcf/input.genes.lof.vcf.gz.tbi b/out_anotatevcf/input.genes.lof.vcf.gz.tbi deleted file mode 100644 index 8558cae9a298a97f83aa9850255b0536d0e3f22d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmb2|=3rp}f&Xj_PR>jW9~j==*~ojyfrm99{?rD>MGgVYE)!W7G|l48SRvV}s3FlI zDAB-qqOeoR$gwN^WZk6m+Yi~l?_b%~ac8CR^z& z-n*y2E9O7iKksXS^CT5dd? -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Fri Jul 3 10:17:10 2020 -##INFO= -##bcftools_annotateVersion=1.9+htslib-1.9 -##bcftools_annotateCommand=annotate -a tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV .//out_anotatevcf/input.pass.vcf.gz; Date=Fri Jul 3 10:17:11 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_anotatevcf/input.muts.vcf.gz b/out_anotatevcf/input.muts.vcf.gz deleted file mode 100644 index b6e0935f36ff031176e9354196e5cd2cff9a41d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3112 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 CF6D** diff --git a/out_anotatevcf/input.muts.vcf.gz.tbi b/out_anotatevcf/input.muts.vcf.gz.tbi deleted file mode 100644 index abcdc2cef7aaca60f46399d6a619761a8f4c5cc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629 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 W{{{d;LjnLB00RI3000000001|12vfd diff --git a/out_anotatevcf/input.pass.vcf.gz.tbi b/out_anotatevcf/input.pass.vcf.gz.tbi deleted file mode 100644 index 38a8bcf6e621e737a3a28a02469548ac02197d23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1747 zcmb2|=3rp}f&Xj_PR>jWe;MAMv*ltk6kxls=2j&etKgcy>8?3CF09tv)q-pGwkAAH zwdo5lG{5Qk#^wO`neQifB#UC+Zz|(h7#I>3Ij`>NsuiEVnspiWSoT?VT6WJo9y3L< z{j$-c7a~zdoBkT>?km51>8-*|p8d}^dd{Em{nFpqzmJMM{{D*FU;lJv{QI@{OQ+qJ z^PHqYL-g+@dt~JKyA1ys8067>zn9_dDMK!Y0*PY}?T;I1XhyElOPDx2Qub)8%n_%3 zj&In$?)m!l%6k2?sk_`LapS*(`;@Tw@RRj+t25_kPb2sqt+Ozju01*L%xrxA`%QzO&zZe!^SP zHMLFY^QY}?`Zy`_=l6_lJ@ACHqwmTgc?q&S}omRE{cV`^@$0@fk;mTO zne}FR+|TcO{+8f3j-YJ%JK@b$YTVd-cM6#IHgX;c07mln;8#2|m04Ig%ic|pymR!L z-UGM3M+`rIa2fipx_@Hl2aAID-NyyyPXKx4|KaZ*B&J!$k@t`RFrvI88oHXgSQjKP zw}?b)&TO2=8KIXyXz?7#yTMV*G0d(+SP+tnX`D)4@S%1?g1Pg`PL=I)h0z0Uur z)w7-Jlvee}Wp(Y&z1jc$&{hU#fk2TkdUYqu;NMnJ&5> R@_d9@a7!~VgKIGm0RY?n<6r;) From d06d6830bc478e0da5a64a25716877ff63c450a5 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Fri, 3 Jul 2020 14:42:04 +0100 Subject: [PATCH 11/16] final wotking version --- annotate/annotate_cmd.py | 6 +- annotate/formatInput.py | 56 +++--- annotate/staticMethods.py | 165 +++++++++--------- out_test/exp_drv.vcf | 18 ++ out_test/exp_muts.vcf | 5 + out_test/exp_pass.vcf | 18 ++ out_test/input.drv.vcf.gz | Bin 0 -> 4479 bytes out_test/input.drv.vcf.gz.tbi | Bin 0 -> 1738 bytes out_test/input.genes.lof.vcf | 84 +++++++++ out_test/input.genes.lof.vcf.gz | Bin 0 -> 2843 bytes out_test/input.genes.lof.vcf.gz.tbi | Bin 0 -> 335 bytes out_test/input.genes.vcf | 98 +++++++++++ out_test/input.muts.vcf.gz | Bin 0 -> 3154 bytes out_test/input.muts.vcf.gz.tbi | Bin 0 -> 632 bytes .../input.pass.vcf.gz | Bin 4255 -> 4255 bytes .../input.pass.vcf.gz.tbi | Bin out_test/obs_drv.vcf | 18 ++ out_test/obs_drv2.vcf | 18 ++ out_test/obs_genes.lof.vcf | 2 + out_test/obs_muts.vcf | 5 + out_test/obs_pass.vcf | 18 ++ tests/test_check_combined_data.py | 34 +++- 22 files changed, 431 insertions(+), 114 deletions(-) create mode 100644 out_test/exp_drv.vcf create mode 100644 out_test/exp_muts.vcf create mode 100644 out_test/exp_pass.vcf create mode 100644 out_test/input.drv.vcf.gz create mode 100644 out_test/input.drv.vcf.gz.tbi create mode 100644 out_test/input.genes.lof.vcf create mode 100644 out_test/input.genes.lof.vcf.gz create mode 100644 out_test/input.genes.lof.vcf.gz.tbi create mode 100644 out_test/input.genes.vcf create mode 100644 out_test/input.muts.vcf.gz create mode 100644 out_test/input.muts.vcf.gz.tbi rename out_testinput.pass.vcf.gz => out_test/input.pass.vcf.gz (57%) rename out_testinput.pass.vcf.gz.tbi => out_test/input.pass.vcf.gz.tbi (100%) create mode 100644 out_test/obs_drv.vcf create mode 100644 out_test/obs_drv2.vcf create mode 100644 out_test/obs_genes.lof.vcf create mode 100644 out_test/obs_muts.vcf create mode 100644 out_test/obs_pass.vcf diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py index 3b50dc1..813f05b 100644 --- a/annotate/annotate_cmd.py +++ b/annotate/annotate_cmd.py @@ -16,6 +16,7 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) version = pkg_resources.require("annotateVcf")[0].version + def main(): usage = "\n %prog [options] -vcf input.vcf -drv drver.json " @@ -51,8 +52,9 @@ def main(): sys.exit('\nERROR Arguments required\n\tPlease run: annotateVcf --help\n') print("Annotating VCF files") # vars function returns __dict__ of Namespace instance - annotater=AnnotateVcf(**vars(opts)) + annotater = AnnotateVcf(**vars(opts)) annotater.run_analysis() + + if __name__ == '__main__': main() - diff --git a/annotate/formatInput.py b/annotate/formatInput.py index bc8caad..a12537d 100644 --- a/annotate/formatInput.py +++ b/annotate/formatInput.py @@ -3,9 +3,9 @@ import os import sys - from annotate.abstractAnnotate import AbstractAnnotate from annotate.staticMethods import StaticMthods as SM + log = logging.getLogger(__name__) ''' @@ -25,9 +25,9 @@ def check_input(self): """ super().check_input() input_type = [] - - for infile in ([self.vcf_file]) : - input_type.append(SM.input_checker(infile)) + + for infile in ([self.vcf_file]): + input_type.append(SM.input_checker(infile)) return input_type def run_analysis(self): @@ -39,43 +39,47 @@ def run_analysis(self): vcf_file = self.vcf_file drv_data = self.drv_data drv_json = self.drv_json - outputPath= outdir + '/out_anotatevcf/' + outputPath = outdir + '/out_anotatevcf/' os.makedirs(outputPath, exist_ok=True) # check input files (vcf_status) = self.check_input() - - if vcf_status[0] == 'y': + + if vcf_status[0] == 'y': log.info("input file checks PASSED, running analysis, .....") - # seprate extension and file name - (file_name, ext)=SM.get_file_metadata(vcf_file) - #prepare reference input data + # seprate extension and file name + (file_name, ext) = SM.get_file_metadata(vcf_file) + # prepare reference input data (drv_genes, drv_genes_prev, drv_muts, header_file, - genome_loc, lof_consequences)=SM.prepare_ref_data(drv_json, drv_data) + genome_loc, lof_consequences) = SM.prepare_ref_data(drv_json, drv_data) with SM.tempdir(outputPath) as base_dir: - logging.info(base_dir) - outfile_name=base_dir+'/'+file_name - final_output=outputPath+file_name + logging.info(base_dir) + outfile_name = base_dir + '/' + file_name + final_output = outputPath + file_name if keepTmp: - outfile_name = outputPath + file_name + outfile_name = outputPath + file_name # get lof consequences - info_vc_prm=SM.format_consequences(lof_consequences) + info_vc_prm = SM.format_consequences(lof_consequences) # create list of lof and ambiguous genes... lof_gene_list = SM.get_drv_gene_list(drv_genes) # create dict of previous gene symbol - prev_gene_dict=SM.get_drv_prev_gene_dict(drv_genes_prev) + prev_gene_dict = SM.get_drv_prev_gene_dict(drv_genes_prev) # get passed records from VCF file - filtered_vcf = SM.get_filtered_vcf(vcf_file, outfile_name+'.pass'+ext) - #get records with LoF effect .... - drv_gene_vcf = SM.map_drv_genes(filtered_vcf, info_vc_prm, genome_loc, header_file, outfile_name+'.genes.vcf') + filtered_vcf = SM.get_filtered_vcf(vcf_file, outfile_name + '.pass' + ext) + # get records with LoF effect .... + drv_gene_vcf = SM.map_drv_genes(filtered_vcf, info_vc_prm, genome_loc, header_file, + outfile_name + '.genes.vcf') # filter LoF records with Driver genes [ LoF and ambiguious ] - lof_drv_gene_vcf = SM.filter_lof_genes(drv_gene_vcf, lof_gene_list, prev_gene_dict, outfile_name+'.genes.lof.vcf' ) - #map driver mutatations... - drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name+'.muts'+ext) + lof_drv_gene_vcf = SM.filter_lof_genes(drv_gene_vcf, lof_gene_list, prev_gene_dict, + outfile_name + '.genes.lof.vcf') + # map driver mutatations... + drv_mut_vcf = SM.map_drv_mutations(filtered_vcf, drv_muts, + header_file, outfile_name + '.muts' + ext) # combine results... - SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, final_output+'.drv'+ext) + SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, + filtered_vcf, final_output + '.drv' + ext) logging.info("analysis completed successfully") logging.info("temporary files will be removed if flag -tmp is not set") else: - sys.exit('Input data is not in required format OR input file does not exists, see inputFormat in README file') - + sys.exit('Input data is not in required format OR input file does \ + not exists, see inputFormat in README file') diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py index 0f2e833..d79b6ce 100644 --- a/annotate/staticMethods.py +++ b/annotate/staticMethods.py @@ -12,18 +12,21 @@ log = logging.getLogger(__name__) -FILTER_VARS='bcftools view -f PASS {} | bgzip -c >{} && tabix -f -p vcf {}' - -MAP_GENES='bcftools annotate -a {} -i \' {} \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' +FILTER_VARS = 'bcftools view -f PASS {} | bgzip -c >{} && tabix -f -p vcf {}' -MAP_MUTATIONS='bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV {}|' \ - 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | bgzip -c >{} && tabix -f -p vcf {}' +MAP_GENES = 'bcftools annotate -a {} -i \' {} \' -h {} -c CHROM,FROM,TO,INFO/DRV {} >{}' -BGZIP_TABIX='cat {} | bgzip -c >{} && tabix -f -p vcf {}' +MAP_MUTATIONS = 'bcftools annotate -a {} -h {} -c CHROM,FROM,TO,INFO/DRV {}|' \ + 'bcftools annotate -i \'INFO/DRV==INFO/VC && INFO/DRV!="."\' | ' \ + 'bgzip -c >{} && tabix -f -p vcf {}' -CONCAT_VCF='bcftools concat --allow-overlaps --rm-dups all {} {} {} | bcftools sort | bgzip -c >{} && tabix -f -p vcf {}' +BGZIP_TABIX = 'cat {} | bgzip -c >{} && tabix -f -p vcf {}' + +CONCAT_VCF = 'bcftools concat --allow-overlaps --rm-dups all {} {} {} | bcftools sort | ' \ + 'bgzip -c >{} && tabix -f -p vcf {}' + +UNHEADER_VCF = 'bcftools view -H {} >{}' -COMPARE_VCF='bcftools isec -c both -p {} {} {}' class StaticMthods(object): """ Static methosds for common tasks """ @@ -48,80 +51,79 @@ def input_checker(infile): # ------------------------------Analysis methods--------------------------------- @staticmethod def prepare_ref_data(json_file, ref_dir): - try: + try: if json_file is None: - sys.exit('Driver reference json configuration file must be provided') + sys.exit('Driver reference json configuration file must be provided') with open(json_file, 'r') as cfgfile: - cfg = json.load(cfgfile) - path_dict=StaticMthods._format_dir_input(ref_dir) - if path_dict[cfg['drv_genes']]: - drv_genes=path_dict[cfg['drv_genes']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_genes'])) - if path_dict[cfg['drv_genes_prev']]: - prev_genes=path_dict[cfg['drv_genes_prev']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_genes_prev'])) - if path_dict[cfg['drv_mut']]: - drv_mut=path_dict[cfg['drv_mut']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_mut'])) - if path_dict[cfg['header_info']]: - header_info=path_dict[cfg['header_info']] - else: - sys.exit('paramater not found {}'.format(cfg['header_info'])) - if path_dict[cfg['genome_loc']]: - genome_loc=path_dict[cfg['genome_loc']] - else: - sys.exit('paramater not found {}'.format(cfg['genome_loc'])) - if cfg['lof_consequences']: - lof_consequences = cfg['lof_consequences'] - else: - sys.exit('paramater not found {}'.format(cfg['lof_consequences'])) - - except json.JSONDecodeError as jde: + cfg = json.load(cfgfile) + path_dict = StaticMthods._format_dir_input(ref_dir) + if path_dict[cfg['drv_genes']]: + drv_genes = path_dict[cfg['drv_genes']] + else: + sys.exit('paramater not found {}'.format(cfg['drv_genes'])) + if path_dict[cfg['drv_genes_prev']]: + prev_genes = path_dict[cfg['drv_genes_prev']] + else: + sys.exit('paramater not found {}'.format(cfg['drv_genes_prev'])) + if path_dict[cfg['drv_mut']]: + drv_mut = path_dict[cfg['drv_mut']] + else: + sys.exit('paramater not found {}'.format(cfg['drv_mut'])) + if path_dict[cfg['header_info']]: + header_info = path_dict[cfg['header_info']] + else: + sys.exit('paramater not found {}'.format(cfg['header_info'])) + if path_dict[cfg['genome_loc']]: + genome_loc = path_dict[cfg['genome_loc']] + else: + sys.exit('paramater not found {}'.format(cfg['genome_loc'])) + if cfg['lof_consequences']: + lof_consequences = cfg['lof_consequences'] + else: + sys.exit('paramater not found {}'.format(cfg['lof_consequences'])) + + except json.JSONDecodeError as jde: sys.exit('json error:{}'.format(jde.args[0])) - except FileNotFoundError as fne: + except FileNotFoundError as fne: sys.exit('Can not find json file:{}'.format(fne.args[0])) - #print("{}\n{}\n{}\n{}\n{}\n{}\n".format(drv_genes, prev_genes, drv_mut, header_info, genome_loc, lof_consequences)) - return (drv_genes, prev_genes, drv_mut, header_info, genome_loc, lof_consequences) + return (drv_genes, prev_genes, drv_mut, header_info, genome_loc, lof_consequences) @staticmethod def get_drv_gene_list(drv_genes): with open(drv_genes) as f_drv: - lof_gene_list = f_drv.read().splitlines() - return lof_gene_list + lof_gene_list = f_drv.read().splitlines() + return lof_gene_list @staticmethod def get_drv_prev_gene_dict(drv_genes_prev): - prev_gene_dict={} + prev_gene_dict = {} with open(drv_genes_prev) as f_prev: - for line in f_prev: - (key,val) = line.split("\t") - prev_gene_dict[key]=val.strip() - return prev_gene_dict + for line in f_prev: + (key, val) = line.split("\t") + prev_gene_dict[key] = val.strip() + return prev_gene_dict @staticmethod def format_consequences(lof_con): effect_type = [] for effect in lof_con: - effect_type.append("INFO/VC=\""+effect+"\"") + effect_type.append("INFO/VC=\"" + effect + "\"") return ' || '.join(effect_type) - @staticmethod - def _format_dir_input(file_path): - """ - creates a diretory object of key = file name and - values = [file paths, name, extension, size] - """ - path_dict = {} - for dirpath, _, files in os.walk(file_path): - for filename in files: - fullpath = os.path.join(dirpath, filename) + @staticmethod + def _format_dir_input(file_path): + """ + creates a diretory object of key = file name and + values = [file paths, name, extension, size] + """ + path_dict = {} + for dirpath, _, files in os.walk(file_path): + for filename in files: + fullpath = os.path.join(dirpath, filename) (_, name) = os.path.split(fullpath) - path_dict[name]=fullpath - return path_dict - + path_dict[name] = fullpath + return path_dict + @staticmethod def get_file_metadata(full_file_name): """ @@ -144,10 +146,10 @@ def get_filtered_vcf(vcf, outfile_name): :return: filtered var vcf outfile """ global FILTER_VARS - cmd=FILTER_VARS.format(vcf, outfile_name, outfile_name) + cmd = FILTER_VARS.format(vcf, outfile_name, outfile_name) StaticMthods.run_command(cmd) return outfile_name - + @staticmethod def map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_name): """ @@ -160,7 +162,7 @@ def map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_n :return: """ global MAP_GENES - cmd=MAP_GENES.format(genome_loc, info_vcf_prm, header_file, filtered_vcf, outfile_name) + cmd = MAP_GENES.format(genome_loc, info_vcf_prm, header_file, filtered_vcf, outfile_name) StaticMthods.run_command(cmd) return outfile_name @@ -184,11 +186,11 @@ def filter_lof_genes(drv_gene_vcf, lof_gene_list, prev_gene_dict, out_filename): # write matching LoF genes.... if gene in lof_gene_list: fh.write(line) - elif prev_gene_dict.get(gene,None): + elif prev_gene_dict.get(gene, None): fh.write(line) fh.close() - compressed_output= out_filename + '.gz' - cmd = BGZIP_TABIX.format(out_filename, compressed_output, compressed_output ) + compressed_output = out_filename + '.gz' + cmd = BGZIP_TABIX.format(out_filename, compressed_output, compressed_output) StaticMthods.run_command(cmd) return compressed_output @@ -210,12 +212,12 @@ def map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name): @staticmethod def concat_results(drv_muts, lof_vcf, filtered_vcf, outfile_name): """ - - :param drv_muts: - :param lof_vcf: - :param filtered_vcf: - :param outfile_name: - :return: + + :param drv_muts: + :param lof_vcf: + :param filtered_vcf: + :param outfile_name: + :return: """ global CONCAT_VCF cmd = CONCAT_VCF.format(drv_muts, lof_vcf, filtered_vcf, outfile_name, outfile_name) @@ -223,13 +225,12 @@ def concat_results(drv_muts, lof_vcf, filtered_vcf, outfile_name): return @staticmethod - def test_compare_vcf(vcf1,vcf2,outdir): + def unheader_vcf(header_vcf, unheader_vcf): # only used for testing ... - global COMPARE_VCF - cmd = COMPARE_VCF.format(vcf1,vcf2,outdir) + global UNHEADER_VCF + cmd = UNHEADER_VCF.format(header_vcf, unheader_vcf) StaticMthods.run_command(cmd) - return outdir+'/0002.vcf', outdir+'/0003.vcf' - + return unheader_vcf @staticmethod def run_command(cmd): @@ -246,20 +247,20 @@ def run_command(cmd): cmd_obj = Popen(cmd, stdin=None, stdout=PIPE, stderr=PIPE, shell=True, universal_newlines=True, bufsize=-1, close_fds=True, executable='/bin/bash') - #logging.info("running command:{}".format(cmd)) + # logging.info("running command:{}".format(cmd)) (out, error) = cmd_obj.communicate() exit_code = cmd_obj.returncode if (exit_code == 0): logging.info("Command run successfully:\n{}\n".format(cmd)) else: - logging.debug("Error: bcftools exited with non zero exit status, please check log file more details") + logging.debug("Error: bcftools exited with non zero exit \ + status, please check log file more details") logging.error("OUT:{}:Error:{}:Exit:{}".format(out, error, exit_code)) return 0 except OSError as oe: logging.error("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) - @contextmanager def tempdir(mypath): path = tempfile.mkdtemp(dir=mypath) diff --git a/out_test/exp_drv.vcf b/out_test/exp_drv.vcf new file mode 100644 index 0000000..f86c941 --- /dev/null +++ b/out_test/exp_drv.vcf @@ -0,0 +1,18 @@ +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/exp_muts.vcf b/out_test/exp_muts.vcf new file mode 100644 index 0000000..76274cc --- /dev/null +++ b/out_test/exp_muts.vcf @@ -0,0 +1,5 @@ +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/exp_pass.vcf b/out_test/exp_pass.vcf new file mode 100644 index 0000000..10cadd8 --- /dev/null +++ b/out_test/exp_pass.vcf @@ -0,0 +1,18 @@ +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/input.drv.vcf.gz b/out_test/input.drv.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..ab85d3cfdf75d0170929e394d0969572a6c2bb7b GIT binary patch literal 4479 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 MwKM}WxbgxK0C*Pt6#xJL literal 0 HcmV?d00001 diff --git a/out_test/input.genes.lof.vcf b/out_test/input.genes.lof.vcf new file mode 100644 index 0000000..fe626e6 --- /dev/null +++ b/out_test/input.genes.lof.vcf @@ -0,0 +1,84 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##INFO= +##bcftools_annotateVersion=1.9+htslib-1.9 +##bcftools_annotateCommand=annotate -a /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 14:20:02 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/input.genes.lof.vcf.gz b/out_test/input.genes.lof.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d0adb64861b8e932d28a3d6190328e0e1ba78f3 GIT binary patch literal 2843 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 literal 0 HcmV?d00001 diff --git a/out_test/input.genes.lof.vcf.gz.tbi b/out_test/input.genes.lof.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..13ac7c1eded6d805e6bc1bec5cf195a748cd3ff7 GIT binary patch literal 335 zcmb2|=3rp}f&Xj_PR>jW?-<_R*~ojyfrm9fK2_s|Anzi!P9^ROj%V3Su1K~TO7t*B zFj%}>q%l+B=;jprli%}MFBt#a#nVD?7v@S@B4D+z5V}luja+8+gx_d+G}&_ z`%Al{JLa98py)YC1rIv8bN2gna^Id_%c?IoeRTQB&HJfy-v#%)-YRE=Pa7T+p;AT1 z>KIFZ3a@AQ&%hv$=3Qrow?`d085lTN40gvj|F&m2D72||T9oYVZMi7u+w=1b(<7wv Q-1RWckY->8haiXm0QrT1F#rGn literal 0 HcmV?d00001 diff --git a/out_test/input.genes.vcf b/out_test/input.genes.vcf new file mode 100644 index 0000000..fd788a7 --- /dev/null +++ b/out_test/input.genes.vcf @@ -0,0 +1,98 @@ +##fileformat=VCFv4.1 +##FILTER= +##FILTER== 25 base quality"> +##FILTER= +##FILTER== 15 base quality found in the matched normal"> +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER= +##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> +##FILTER== 10 on each strand but mutant allele is only present on one strand"> +##FILTER= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##FORMAT= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##INFO= +##SAMPLE= +##SAMPLE= +##cavemanVersion=1.13.14 +##cgpAnalysisProc_20190930.1=5346618 +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##contig= +##fileDate=20190924 +##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa +##source_20190930.1=AnnotateVcf.pl +##vcfProcessLog=,InputVCFSource=,InputVCFParam=> +##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> +##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> +##bcftools_viewVersion=1.9+htslib-1.9 +##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 +##INFO= +##bcftools_annotateVersion=1.9+htslib-1.9 +##bcftools_annotateCommand=annotate -a /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 14:20:02 2020 +#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/input.muts.vcf.gz b/out_test/input.muts.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..897c3337cd1842e53b977b594cf734ae22796d21 GIT binary patch literal 3154 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 literal 0 HcmV?d00001 diff --git a/out_test/input.muts.vcf.gz.tbi b/out_test/input.muts.vcf.gz.tbi new file mode 100644 index 0000000000000000000000000000000000000000..363baefe5ad66fb89ac08755084803b7445eef98 GIT binary patch literal 632 zcmb2|=3rp}f&Xj_PR>jWUl`t=Hsm_wAi#RzZiCo72NrJ5X-!;=*=u=jR5D9v=RXiF zisY8Qe%HZZDtm?eGy55LcgmeF6mnW|>BznOSNBq9-Tu4r_OpA>^NQs6-F?!$O}l+_ zsAbi+>xO@xZPDEQasT(E8xvJLCs7mq><^uF+NNbj&9&6;QR27P?dkt+_$SRs_TK~) zTV{S@)UOa`VffF$AdlwhpA2vB9^_;)1bRBMf0JlOg`gwL_Y6U^MDcsM2aR&PH!$eO z-IZ`Mh-l!}pI|e?hxh;SRN48?lT=P-T1mezmb}=z&#bcSR$Bk{Kljh={$aPh@~$F& zKc1{Nf4Xj7xMlX%C+qH&-<)*%*16j;*A}j~MsYF@GlC7j8u9$Tb2OkzQi-p&$~)iL zI=@<4u6q~IMcB0bc`4l!T=E8+&vO{w9(CkoVBlcca60+Fo0uSr@{ikg-r>`7Z*LVkAf6vWdPn3TQX_D2m1CzkWHwCA zYXS%5hFsiz{NZL;Yy0Py?w{wE9(>yH@&7#U!FdnPdvM-^^KPeReFg}hBYbYDe~9S= zxQ@=9;yROu^2j8P1}oI47+IWQ3D%HN9DEV1?Gji4a|KvQbcTq8YP&6A>9#dgIhB7< z)z{i>4OPO|NX2EO631j)SiSzEd+lB$?Ma5Q@+8AlIx+x9Qrnh(bYF%acai#I&F>_f zTIZPONX2N4Q)B}=ZHZn2f7AeziyWxbcHkwZTmm&hQE&>Y!s>5Wl@(Aev#MQ?s^=A? zip5c!dfUV9KhfuRH+|pI3nwt8(wBe23Y90ZEj;DNzC-?_>dNRZ@RIar$!%~mnXes| zX31hO2_Tq{p70c+cExEGPceZuhqgrGTy`AcSK{!c*?$t!aKVTL;1tp@5TQH+!0Ed{ zOIQKTsv!hMSez3;+9(=Yf*wGczl}7!g){{5+sTpUdA{#!q%oR9&65{3)F^*H3TnQ0 zXq!^rYHm1h=e+{5l%c6*m{()Z||up(q5SPr-fcy2j1d911;w=k@J~En@M%- z#Wf6M59?q7(8j{HEpYCT@eiP3kUqlS$60>@m6y8tw;e?!&Sr7C#@S1=|Cx-2OF&bBlLG*Ge$TXt z0vf4NBH+hCHCtFiC&bo)BySsNP;G1&%_*P;DP0?W6x2|j^XBOHZjZ~0^wsSlP zw>krIh=VjAFl^_Ux<#?h)87#)zC9mQ>Fh-re`ael|& zfsd*HdntCGge_7aOOcht7Rs@ebC~=&=NI4CdFszMRjQj;shEEpg{*$ZZRNcN^K)(Fbz8nhMW*J`F7N_w_qn@WX@^B{STB zRG4JD&{e$?-DH0jyM-<}Zac*9-f9QQV zvA;d5?9k!MGXK=1u-x&}du6OBmnG&@JT~ndXST3yCWLJFaSFxTm-lolUqINjVyN0G zvv#vWhSz^t;hGbvIEoW}|3;Ubh7=9YK3NkC| z)~%fkm6qkTtLdnE^VZg+L#_xZJsJd9epnBxfP$b%?tTL+%r_wW^qN7cr8i>fPyY`kwO~z?e-I!<%tLno delta 1728 zcmV;x20!_qA)g_z+z19_onz~qF|*~qA8v-Vwts%<{&{}s!KV!$|IhOtocG|o2j@LF?{;d|XY1TLNBG=Q{}9s$ za2=gH#dRhR<&jAo4OXa8F|s(r609MkIQSx1+a<69<_fTq=nN4F)plFL(rs&~aw>nJ zs;{-%8mfe^k&4SmC639quzLMR_u9Qi+LH`pn=)Md;?jrTan%_w{ z1;*t$QZZWN6xo1ITcVf1A2q<_A_pq99e9Z;mq3kB6r94Uu=*QTWd&5rtZEme>UjmJ zVsR9w-uAHjPxSfSP2acl!U;^N^re5WLgh(p3s3p6?~wnfx-$9;yd?cuavR)C=4*$g zS+W>R0tn`#Cp?9yU2$5)Q%s=Ep)HX(mmNp=l{kE9_Me0_Trgq*IE6F}L@3VyaQZIL z5>`O7Y6yW57Uu+zHj0Lppa+oVZzBzFAq_$Nc5Ot{ zaSa36!#Y?1w6U;lOPl~SXG3Wi2n`o7^VcwQ$QovT0W(M^kAc~5J-4sCBy3A3P>!Qx z63GKn8{yV-`~zqhq>u3Tah88T<)v=^ZATG_vss+3arV;ee5YO%@)?s39)q`$=e1RR2v&ca|)1-{Z2pQnI?J{YB88uH%n?{eoZsr1=940@Io`J^|v_y>|%NE3<04)+hK6Z${N(~jZiIXxR zD^;m(p8E4mmFnhIDkgtNA*UvhHffxl@1JI)0cOv8?YAtyvlz8y8~E!fEznKPQriom&HG_;1DsKAbF zhs}?zo?W<$>&AhwoHL|D4|BvBdNB>I-Nwj|G`mwF>J;SYl)`^5m!+z_e-0QnnXMq| z)F=}e5!(TXQi@S@N>hZPEoPLhX1;EUxa(Fk+q9b9yeoo^O6>Z7bh^LgO;~Po6N3{8 zBBJQRV&RY%)P>yz=?^x+(`sG1#hL|7#W~Bb<((FjBMDPnLr~?~pu(0L{1D7f$qY9j z6(-p(bXD&}H<^FMZlOz#+Ya%&x7vlA>imi`uJbF#S>B33!uj?Y)=nqor5Ju%X7Z1t74kNd~GI1J9PN6%s(|LEO-3$UKuOOWr;Zzk4-zrnJsLa2_f5koI>&T`C4+gSYiN=>PAc>;)NrT0&Qp!Nq~b zSiT7hiQRgejH>-uTBA0n%u-x7L_^_xx$^MK+p%b?IOav%_5Fss)$UVYa*@~EO}h`# zqsYv=?Okb45n60AIaCDs*FUImm7{*+%=-3zs)B#)MHzo0k!=Hw=O80Rxl7i;)I_TD z$AHN=q1=%jn2?9`;5VsC`Q3KouTnV_$sI?#JF&z$?u%3&Cd9@RlEKZ+IYSs@TYcY% z<&lTv+4%4FcaV%%vGyV-aaxjA-p1JM$`;*bm83!VG_jpy4q<^9v*bp`2ovYD?SH!Y zMwEYQ`?1}P3}NqXWT4}^&2HDz$u?9ydRx=Vx6TE%^QsSv@8ByMJ3xCWhMxwmg3OA# zb!#U>rDb{TYC5W3{Z|bU#wcS5qNamI5b-Zp0B)Jk=oX<#Y$1s)*Hsn3W+PT#*lfh& zO|i-<&?2R;+g;uGeSWPY52KbY<~Tw+@?a?2)`6$@J$wbIim#Vs`w0+RN6U2ukSAvP WI??Q9>5W+W)Bghj8{>eJe-I#)kygn7 diff --git a/out_testinput.pass.vcf.gz.tbi b/out_test/input.pass.vcf.gz.tbi similarity index 100% rename from out_testinput.pass.vcf.gz.tbi rename to out_test/input.pass.vcf.gz.tbi diff --git a/out_test/obs_drv.vcf b/out_test/obs_drv.vcf new file mode 100644 index 0000000..f86c941 --- /dev/null +++ b/out_test/obs_drv.vcf @@ -0,0 +1,18 @@ +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/obs_drv2.vcf b/out_test/obs_drv2.vcf new file mode 100644 index 0000000..f86c941 --- /dev/null +++ b/out_test/obs_drv2.vcf @@ -0,0 +1,18 @@ +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/obs_genes.lof.vcf b/out_test/obs_genes.lof.vcf new file mode 100644 index 0000000..5f7d20d --- /dev/null +++ b/out_test/obs_genes.lof.vcf @@ -0,0 +1,2 @@ +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/obs_muts.vcf b/out_test/obs_muts.vcf new file mode 100644 index 0000000..76274cc --- /dev/null +++ b/out_test/obs_muts.vcf @@ -0,0 +1,5 @@ +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/obs_pass.vcf b/out_test/obs_pass.vcf new file mode 100644 index 0000000..10cadd8 --- /dev/null +++ b/out_test/obs_pass.vcf @@ -0,0 +1,18 @@ +chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 +chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 +chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 +chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 +chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 +chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 +chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 +chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 +chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 +chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 +chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 +chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 +chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 +chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 +chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 +chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 +chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 +chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/tests/test_check_combined_data.py b/tests/test_check_combined_data.py index 9e37e35..e7ba589 100755 --- a/tests/test_check_combined_data.py +++ b/tests/test_check_combined_data.py @@ -3,6 +3,7 @@ import pytest import os, tempfile import filecmp +import time ''' written test to check codebase integrity @@ -35,7 +36,7 @@ def test_static_methods(self): os.makedirs(outputPath, exist_ok=True) file_name='input' ext='.vcf.gz' - outfile_name = outputPath + file_name + outfile_name = outputPath + '/' + file_name exp_drv_gene_list=['APC', 'B2M'] exp_drv_gene_prev_dict={'ATD': 'ATM', 'ATC': 'ATM', 'ATDC': 'ATM', 'ATA': 'ATM'} @@ -59,12 +60,37 @@ def test_static_methods(self): obs_drv_gene_prev_dict = so.get_drv_prev_gene_dict(drv_genes_prev) assert exp_drv_gene_prev_dict == obs_drv_gene_prev_dict, 'get_drv_prev_gene_dict OK' + obs_pass_vcf = so.get_filtered_vcf(vcf_file, outfile_name+'.pass'+ext) - (obs_vcf,exp_vcf)=so.test_compare_vcf(obs_pass_vcf,pass_vcf,outputPath+'/test_pass') + obs_vcf=so.unheader_vcf(obs_pass_vcf,outputPath+'/obs_pass.vcf') + exp_vcf=so.unheader_vcf(pass_vcf,outputPath+'/exp_pass.vcf') assert filecmp.cmp(exp_vcf, obs_vcf, - shallow=True), 'passe records in vcf files are identical' + shallow=True), 'pass records in vcf files are identical OK' + + obs_drv_gene_vcf = so.map_drv_genes(pass_vcf, exp_consequences, + genome_loc, header_file, outfile_name+'.genes.vcf') + obs_lof_vcf = so.filter_lof_genes(obs_drv_gene_vcf,exp_drv_gene_list, + exp_drv_gene_prev_dict,outfile_name + '.genes.lof.vcf') + obs_lof_vcf_sub = so.unheader_vcf(obs_lof_vcf, outputPath+'/obs_genes.lof.vcf') + exp_lof_vcf_sub = so.unheader_vcf(genes_lof_vcf, outputPath+'/obs_genes.lof.vcf') + assert filecmp.cmp(exp_lof_vcf_sub, obs_lof_vcf_sub, + shallow=True), 'lof records in vcf files are identical OK' + + obs_muts_vcf = so.map_drv_mutations(pass_vcf, drv_muts, header_file, + outfile_name + '.muts' + ext) + obs_muts_vcf_sub = so.unheader_vcf(obs_muts_vcf, outputPath+'/obs_muts.vcf') + exp_muts_vcf_sub = so.unheader_vcf(muts_vcf, outputPath+'/exp_muts.vcf') + assert filecmp.cmp(exp_muts_vcf_sub, obs_muts_vcf_sub, + shallow=True), 'Mutation records in vcf files are identical OK' - + obs_drv_vcf = outfile_name + '.drv' + ext + so.concat_results(muts_vcf, genes_lof_vcf, + pass_vcf, obs_drv_vcf) + obs_drv_vcf_sub = so.unheader_vcf(obs_drv_vcf, outputPath + '/obs_drv.vcf') + exp_drv_vcf_sub = so.unheader_vcf(drv_vcf, outputPath+'/exp_drv.vcf') + assert filecmp.cmp(exp_drv_vcf_sub, obs_drv_vcf_sub, + shallow=True), 'Final driver records in vcf files are identical OK' + if __name__ == '__main__': mytests = TestClass() From 19c14efa82147904b0bc12d7ed45c0dd37f85ba4 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Fri, 3 Jul 2020 14:42:32 +0100 Subject: [PATCH 12/16] final wotking version --- out_test/exp_drv.vcf | 18 ----- out_test/exp_muts.vcf | 5 -- out_test/exp_pass.vcf | 18 ----- out_test/input.drv.vcf.gz | Bin 4479 -> 0 bytes out_test/input.drv.vcf.gz.tbi | Bin 1738 -> 0 bytes out_test/input.genes.lof.vcf | 84 ------------------------ out_test/input.genes.lof.vcf.gz | Bin 2843 -> 0 bytes out_test/input.genes.lof.vcf.gz.tbi | Bin 335 -> 0 bytes out_test/input.genes.vcf | 98 ---------------------------- out_test/input.muts.vcf.gz | Bin 3154 -> 0 bytes out_test/input.muts.vcf.gz.tbi | Bin 632 -> 0 bytes out_test/input.pass.vcf.gz | Bin 4255 -> 0 bytes out_test/input.pass.vcf.gz.tbi | Bin 1749 -> 0 bytes out_test/obs_drv.vcf | 18 ----- out_test/obs_drv2.vcf | 18 ----- out_test/obs_genes.lof.vcf | 2 - out_test/obs_muts.vcf | 5 -- out_test/obs_pass.vcf | 18 ----- 18 files changed, 284 deletions(-) delete mode 100644 out_test/exp_drv.vcf delete mode 100644 out_test/exp_muts.vcf delete mode 100644 out_test/exp_pass.vcf delete mode 100644 out_test/input.drv.vcf.gz delete mode 100644 out_test/input.drv.vcf.gz.tbi delete mode 100644 out_test/input.genes.lof.vcf delete mode 100644 out_test/input.genes.lof.vcf.gz delete mode 100644 out_test/input.genes.lof.vcf.gz.tbi delete mode 100644 out_test/input.genes.vcf delete mode 100644 out_test/input.muts.vcf.gz delete mode 100644 out_test/input.muts.vcf.gz.tbi delete mode 100644 out_test/input.pass.vcf.gz delete mode 100644 out_test/input.pass.vcf.gz.tbi delete mode 100644 out_test/obs_drv.vcf delete mode 100644 out_test/obs_drv2.vcf delete mode 100644 out_test/obs_genes.lof.vcf delete mode 100644 out_test/obs_muts.vcf delete mode 100644 out_test/obs_pass.vcf diff --git a/out_test/exp_drv.vcf b/out_test/exp_drv.vcf deleted file mode 100644 index f86c941..0000000 --- a/out_test/exp_drv.vcf +++ /dev/null @@ -1,18 +0,0 @@ -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/exp_muts.vcf b/out_test/exp_muts.vcf deleted file mode 100644 index 76274cc..0000000 --- a/out_test/exp_muts.vcf +++ /dev/null @@ -1,5 +0,0 @@ -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/exp_pass.vcf b/out_test/exp_pass.vcf deleted file mode 100644 index 10cadd8..0000000 --- a/out_test/exp_pass.vcf +++ /dev/null @@ -1,18 +0,0 @@ -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/input.drv.vcf.gz b/out_test/input.drv.vcf.gz deleted file mode 100644 index ab85d3cfdf75d0170929e394d0969572a6c2bb7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4479 zcmV-_5rFO=iwFb&00000{{{d;LjnL|5#3sQbJ|#z|C|04nsn7n_XdRSQxc9crHGh# z+SoKG&U9~WQ9=mNu0RYDPCS(lzvo^_fP@L)&Thv^+ipFs&hw}9y87|QNf-r_cs2J@ z>(05nrz-m4#~&}RuHCnN>(y1;>e+)qy&WX}DqN;vys%!_QKZ0AX|PI^rI#eZ_{Hn; zGi~=>`H|}&NtATvEfmxw%6y%Ai&XKVD2ReY`53GM<+Y_?ri{EKQ2w>{qA-1^67BcO zG@bZ9Sb5Vx`RFA|v|(T<-eRmQ;zzkm;x*h17qApg!c~$g7zBzZil?jsZ>;>3%)&_; zj1^7Q3}v#4=W=P1daG0t4nC#9Vq7ek$3RrF&B=(xl28;Zrs?eGsuJCsvJ%}50ieeO zg^Jj4FWp!Ol`T|O2R!J{0--uMGpaJ~xfRA`Ht>HXUcgVFjKfvni$y}3%qVCz7AxY9 zKwey5F5@Ijg;`c$lb@wwK#C;rV>p_5(PY;asxm0wkVN51>V=CWlRZwuiPGsf|7pAb z)yZi6YaJ|n!EhA@uvAJU7|HbkSgd3U;X=?sTmx;ug{vLHWrSdD&nv%Hj3da;z2!1o zOm{g*io1rBsw9&BD+Qw}-9f)hw3KYqhMvBy8EyUtU*){sm$E-nf1S}&sG7v6-jW2+1K^i5oTZ4XGfTQU7vlKS+85+bs5E8S_zdq=|+}P zc?6KOu5K=Gv+}feiqvkLLOf}UJW+nUTYdZyK?du&kihZo-gY5zB{2k9$i34%hKPtX z@Hh}sx7$v&m#V~PzE=>irhCF!L>qgZ+f7t z$nrl_&B}NL4=SQod^lRMYQL zD4Z_lqEbkF(H-RtL!utu z4FW;q6~^o2Fx68^t-D-D`PK;Y%eGT!f3on-2`^H?23pag-8_ri!0z_0-%5TrB2QhH z$=_s+c-{7W=wQSpwcd-oR7_i}tLy9c-K!hB4&ft>{W!8dbO!Z-tX^-td0>5T2UiW} z_WE|HX>2&E51x)>kLN6~|IuL7N&;D zIK{Z0ECU}>nDuTAOkeL&z=tVdWDxNgC_acw05&oxKMII{9*z=RqZ&l*V-$WnD1wf$PSH^U-Gd@<#vg&Bs94)x z8dzCE!Xj6#f=RFv`QBqwqdx zj=j`tdU>*IVubk+fT(lAnt55@6h;3$P$wR6OJw@oO^A6R5#0F`bs52udw(L5CZy}@ zSZKOfuG2f`(t4%7t`{eH7Jikp*xu-QD{pSS>c71lzPYjomZpLmdi|^0{;>Pr9rkVa zt;K_e#_L&`GIVZlTw4?Y?$zxLEY}FgM(Sd*^WMF^yo75;P60ZCi~=mvG*lPon?)vj z{kkgsuAV!JB+x^oDy&q|zDlAy$<-25$Yr!$0)>Y43aN%_>?ypS-&>pUqj)`r zS|j>8%`gel;S%T$$AKR|3}=zoywB?GW?-V?Sd{`uGp$pQ?5n@9d5u3TUfliiS2&;? zR_fv6kBO3`-ZUu7QJ^EQuZO<6!6zu6dZX}@wU+=S7DoOgjpHa8-iN`*ZC!4@oTW(= zjv8=SUFF1c;4!wuvC^0*Vv|=%gCtFw;_p!EHw4~Id6Y|Wp~yJu&eqC5){&xM1)~-s zEsZKz!&+&O(Z4&P&ug#1A}gin!<-1zdr?x!D-e5Btzu=NT5+y4yj{)4tNXU_z*w># zihTkhOEMI9)ik*WJ(b4nu}8oNV3bA@PZ)Yd+BjgXX^@yvNNU8 zkUPW;u|X7h%LFd0=8f@snQbmV@~*4`FOqM=e4HZr(qP1z$%vBXG)#w*SF_Mp*m1`v zSun^g3r;L7`+v#@!hevcQ9SwoV73pJ%T<`UkSK_@u-4LW?m~&gTJLsHyK2{<45-=H zZtd6i_H`}WTB`|2)UsK6Evo@)+2G&@QQOuK2hpJhFlxH)n~02p#(1LR210?^@Vvli zjJc)-zK%WLH)~GKuBkNwRKwjIa0aC@SdFfRuA zHMn>&5Z5#lU5MGCC?oU>F|@O^3o$%{evx0?xz=Dky0~jwcH8c{1Nzx<+5?0!QPJm> ziV4+TvgzyfXJ19ohrDE+*Y4+~`uESvRh$MP#LsvP@ume2wTf>xhQ3HUkYk}36W=ei zlJzJ_!*neoKx^m5FdwqD#70CGuZl~b2e&Ov{6ktRKO~6fhtLucafsv!TwLYYEDo6t zsyP_lm8)> z9l&+eGK=d>9Eu~Am>F0xGBMIP!vd^6quBc*SUV-K0_F;^lAwWzfNG~BU}<+UsB$Wx znqBL3GN=;1K`JgIm6$5q!RqyIy=(g#Wu9ahOHVRPg(E$1B-M4{NBepBaUZGQmwspA zRBK_LBNd|!PLU4i)CGDWqqgJ%l^Z!wscyncOt}DRfCBHFs0!BKMpafowH#ITBB(k} z5md2pQcS(=WBVWI^V^$&t7V2WFr~tmhUQC8V%>109|tD+kE$z!Pv9lt&yw5VX1v%q zEJ@?#aOyz;JbuJei0T!mRXoKEv^~@X5*K1h4?hBj&rSZbkcNwhSO88U4MQLlX8^eD zE`%j4fQD;`G6Ky*O&1d!hO{Fvb9Z63jfaLRA|lRV28eRqJR%x7&cr1*kBFz`Znt-v z#R^Wdti~DlWlCe5IWnL1kzxM%4ypp|*$93fvRIL8^&Mns5?NegOa7{qWxz5yN1Bcq zAdC56fpd^$NMu3jX9#d%5yLcd3oa)Im$3!cCWrwD3viJNxX=!`ez9)`*F?IBa>9}H z6J%um5@p#45oEqZ&n6x1r`zvM!}Gw33b5i5Sh2{o;up(R09TZULC#DK>81v7<%F4r zaYkWiYy%-wHANt-l!ok)(vY1N2wexGH`0@Y5X7<)-@tknR4_NpEUNr!nEIa|RrbQ+ z^Ai8u!fumr@wTvIc|1e{b5!PAJ;#}D=sGhDBydI%HNV_|RJvt-gEK1YI&D+e*+pH) z@TObd#6)VG6cb(dMtX^vlw@Aw(AH;NB)kzM>mlF5+sgiYH|?YB83})0lWP>Q%-D%# zDDN1c$=%d+R5lN^Ms-e^CS%zMjSTb4y@Ols9neniz>B==x=q`4i=xhy6B%*M-V}9U zf|G)obKAelJVl`4%aW2w4KJTnP{Wpv`h_#?&-YUmWY0?YGXvQ!(0C3qlAW5xflQcO zfQ&&TG6b<>^xvX^=jlA~uz?uUbO7BL6VssQ zw5xPGzEgDo9m_%IZX=sfj71!G6WI_s4Rk#xE4HEQk&(gFNaiAg>Ur0Pjc;I{um`kf zBe>YDDkMJ-X+>l!n%Elpyy*}mpZULyi@^Dxau{iK%k z8k*Q_$H*jRKEh&H&v!O8iu1OPP~#hj6qP{ttb{*z>`|`Wa*Rn}kzz_rM7NM(jMXUB zk@z|eFowodGyQY&>2~hHRSFoR`;{9+zrD&$Bc~@|c);itR=!g+O#zX2ar z0rqU~gUbi7xxXG>*88rq~tU)xN84W*(=Dt)eMJUOH8?0w}! zUID_Qr7&|Cg7ayCLCy_sundD7q&g#?^4)x@?_f}5&pg)Y#a=?^u`bo9V36!4)DP{x zUigk@pI{i8*+82?X#+i*PlfjPyuK&x&V{I1L`t)ikh$3OmwR1+VU@{23NmYy85j}W z6#M=Zqu`v+OW5vqm-uLp?{7mGZ2QrkU2M&sRPqge>-K)hKWF1QS1~w|AYv5Xvth#| z&**!$eUN@<3ZB;z)19bUz|?55{969aipu4#>_2OWFh&`q^qOvB!wdMA`(eA>na~}W zib#qCOl@02a@(0?7q*=V-hM#9DljFb@Aa;3+yTGNb^{pIvI3tYljWe;MAMv*uzl6k)ya<7G^9FIUoYagmK11w`Jkymj4BCL5-A z*5UYZ2je*1KL zqKfAv+My@&>lhN94t-y=Q-cy- z$bwJQ`4-*oj{TN+e_N*PUm5qE+PlB-&E7Ke`JOwc|Nma{8mC5NL%{61m%_K-ur9~u z-yIBZPdRcqFbK3=d?@iQVdauFZ>B8X(Q|lbcg_i&BbN@n`fIxP*Q^_}cDNB`-JfT7 zmOZU}JZW9*ww3&2gg^-NR}&H=0``8jt00EMpSC=TPy%Soci-bF+QU*e!lCC#L3JrR+u3 za?9#Bo0k{<%KxNSm%ekAHHO2B{w=F+DhdyH$Jyq*ZLju@{Gw~`Vt>sdP+Y88cJKW4 zE3YGe*{naF^O809^EUA>*RIQAb(O<4Sr@TS zz3hhS=h#hUaW2L4_ExnMFymzWmRFDWo(*QtfA_f8f^Sv%yVtqT-|oBjcgsCRq>}f~ z52j%KJ^!$UMLV$kaO7lQ;9%Lnox%G1x&VvukDGSh;nRpL14vQ!?Rq-H<>W>_&qtW$ MwKM}WxbgxK0C*Pt6#xJL diff --git a/out_test/input.genes.lof.vcf b/out_test/input.genes.lof.vcf deleted file mode 100644 index fe626e6..0000000 --- a/out_test/input.genes.lof.vcf +++ /dev/null @@ -1,84 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##INFO= -##bcftools_annotateVersion=1.9+htslib-1.9 -##bcftools_annotateCommand=annotate -a /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 14:20:02 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/input.genes.lof.vcf.gz b/out_test/input.genes.lof.vcf.gz deleted file mode 100644 index 8d0adb64861b8e932d28a3d6190328e0e1ba78f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2843 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 diff --git a/out_test/input.genes.lof.vcf.gz.tbi b/out_test/input.genes.lof.vcf.gz.tbi deleted file mode 100644 index 13ac7c1eded6d805e6bc1bec5cf195a748cd3ff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmb2|=3rp}f&Xj_PR>jW?-<_R*~ojyfrm9fK2_s|Anzi!P9^ROj%V3Su1K~TO7t*B zFj%}>q%l+B=;jprli%}MFBt#a#nVD?7v@S@B4D+z5V}luja+8+gx_d+G}&_ z`%Al{JLa98py)YC1rIv8bN2gna^Id_%c?IoeRTQB&HJfy-v#%)-YRE=Pa7T+p;AT1 z>KIFZ3a@AQ&%hv$=3Qrow?`d085lTN40gvj|F&m2D72||T9oYVZMi7u+w=1b(<7wv Q-1RWckY->8haiXm0QrT1F#rGn diff --git a/out_test/input.genes.vcf b/out_test/input.genes.vcf deleted file mode 100644 index fd788a7..0000000 --- a/out_test/input.genes.vcf +++ /dev/null @@ -1,98 +0,0 @@ -##fileformat=VCFv4.1 -##FILTER= -##FILTER== 25 base quality"> -##FILTER= -##FILTER== 15 base quality found in the matched normal"> -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER= -##FILTER== 3 mutant allele present in at least 1 percent unmatched normal samples in the unmatched VCF."> -##FILTER== 10 on each strand but mutant allele is only present on one strand"> -##FILTER= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##FORMAT= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##INFO= -##SAMPLE= -##SAMPLE= -##cavemanVersion=1.13.14 -##cgpAnalysisProc_20190930.1=5346618 -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##contig= -##fileDate=20190924 -##reference=/lustre/scratch119/casm/team78pipelines/canpipe/live/data/analysis/2126_2577635/CaVEMan/genome.fa -##source_20190930.1=AnnotateVcf.pl -##vcfProcessLog=,InputVCFSource=,InputVCFParam=> -##vcfProcessLog_20190930.1=,InputVCFSource=,InputVCFVer=<1.8.8>,InputVCFParam=> -##vcfProcessLog_20190930.2=,InputVCFSource=,InputVCFVer=<3.5.0>,InputVCFParam=> -##bcftools_viewVersion=1.9+htslib-1.9 -##bcftools_viewCommand=view -f PASS tests/test_input_vcf/input.vcf.gz; Date=Thu Jul 2 21:13:04 2020 -##INFO= -##bcftools_annotateVersion=1.9+htslib-1.9 -##bcftools_annotateCommand=annotate -a /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/genome_grch38.tab.gz -i ' INFO/VC="stop_lost" || INFO/VC="start_lost" || INFO/VC="ess_splice" || INFO/VC="frameshift" || INFO/VC="nonsense" ' -h /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_drvData/vcf_info.txt -c CHROM,FROM,TO,INFO/DRV /lustre/scratch119/realdata/mdt1/team215/sb43/git_tools/annotatevcf/tests/test_output/input.pass.vcf.gz; Date=Fri Jul 3 14:20:02 2020 -#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL TUMOUR -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/input.muts.vcf.gz b/out_test/input.muts.vcf.gz deleted file mode 100644 index 897c3337cd1842e53b977b594cf734ae22796d21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3154 zcmV-Y46XAYiwFb&00000{{{d;LjnLb4Aog{bK*D_{mlFdZFki?b{!+hZxW}9HXS;< zAz{FwcV=sgGDd)BjqR~by0euZzgMzNFo_3}?yZ_m1!Bw6xv!&pubj7U7eUAtak}<$ zd*WQ&sWSQQ?c0mXEBF1#KD+GM!|r%2^;qVoL6Qe?WWVW#A%ayoOEZ*sS;ppX&g*M> z?uYu4E0$#_UwIKCZ3V42xfkWg3quyN41HoLL+3W48k%_-L%(mlFv#!sK}W+nrW4<> z)LSz2$;(i<6<{JSnxiOwR>~sYz{4Pdsc;jdS&k?u6fcm6Qs&LkkJ&0%p@(Y%_ljsaANEn)a%0Ti-mnXi7@H)3#IH)5~_06dK&?5PdU@~wwR z-9vSAAcFpianm7~;lALZyC=9V2L7Trf?tN_LCSnSiEC3hg`{&nBmM;Nd^}0wEXcWA zQt-)7!ZDyl#{3wrR$jQ+^@WVa^#=kJMshERvO@Pb4;HB3cmCCN|J^UJe&4Xj=K|A! z!Bn9U7bNC0@L0_iJcM8a9|LP3gy{}&ogoxIiOSD=&f)NDFG+%Exhp{+?mAAGk_r4X zM9DtxcvQz7a<_3i7O)(a1^Eh0^-vb969JYmi1sGqVg>CsNfHL&gBg7IM%@?S94WvD z4+5828u+h}GW_r?cS_qiH%said_X@YEL{gV-$qFqCvjS^34TFbTF&Zl#;ZR`BBmmq zrDtnl-HY544}Tc)lFxmCFZ!3q$yLEAxvv%GzFgSo>&7f)uq!gw zB<$~U%TiQ-QY8eb3h^uFFIjw{8zWkXw0)PLxj(R>CA5$_f64|XhDS>5rd zci2l^*aM3kEkF(E_T~Yw_Q#!r67uH1Z8GQ>;V=;f%V^Czh0N!tqw>Izp==d@s&u;Z z(%`Yc*A;TEj!6~IC=`h`T%dU5he48Xv&ESL+NDY;cL>iipo`FK-yeh5`9m1azQpp$ zzToHRGx3%wm(gPjZxiOI8v#AV@oEq3;|strt&W>7k~Z!RhF9-}ylY;kuIljD#X(%^`aYas_>e3OLoerVTkOlL ztJ}flbytG)k;i@<+8_I4X)LXVMtjV4vCYo?!QOaC19) zu4n!_f(exEnrz>@V{0#(K&9r$L?((%RQ_O@bR#dk&w>n~{VB!7!j^(%Vrz=3>%`=f z;M5;1h35V$B@%yqw4R0c_O8`xAeElpP`m9m8SP{QmF8xVT_1c5dqP+}<> zwGJUDO$fv?sikS!K?JoK0aKy^#32N&5y2#yV$#Dp=#2;lHnCecQnp|zulII4gtjwfZ783- z4JO2D`(Czg=geChW)dWfAFMJMjQCAE4DMKa?&V(FD~ny55~@#uh=#6c?XsZYv1XQhb82SYFQ z*7n)x{l)a%Wp`|28Nx6eUEYkQgIjkx>bmc3otc@yAX-dw|UtblHc z#3wtq?#;yojF}|@oCpd8n1(Tt`2BX0rJbMeYrkvfjv*PGA#xdJ%H*j@{B%;9#ot0E z;o}r&H0(1Xo3i=D;LZBZ-oCz^-f2=8Z|2bJgb-?srJ2pU>m_gdG7p9q_KpscFP@4U z;MXEp%0U!JkxezojHWKnytM=@x*c?{r4_6O%GleW!fzlYRbL~m?K1pgRW3TJVE!3a zc{BLR68Ktf=TxV48O~Gk^1o7C=m{q5>UUS@m&cWgcP!1hj(_BFy6f?$Zm!dA&&P_a z$@qzneGi=bx?KVuYp?h&Z1+dbN-?L4O&CtAZ8ObSK1~33I%j@-KV5}h`>yD>+sq=> zwJa16ZrbFa*;n7NWsg6tHty5*mj|GpR-_>MGF7tNTe7+y6+6oQdg{wteuDA2Hw!-7 zPYQtG!pvXfaU5pTyMTRq?8~jct@11kW+!mDKg)^NAY*RxYjmkaaC$@ibNiDR~z*AO^6Uhlyr#F!78Gd;@XRh(d3A8UM~fYq^LTFIU$($re=~? zG4`NY)y&GY>K>hV=$Syl!8#P7SkH4JB1VbU&St98UIzJ8V74m^?uZ@l%+tFbUpg1+ zPx=2ExINjFKb7m6`L=u2D*ngR;&`p%rE;q%hOOcR{hc^GviNFaa$0UnZt>mI>J4p!o(_gKIqeVmu^0-jb?WwQ$7wr` z>$<1z5Gtmoo{q~g7(5;GF;ze1FVT2CHBR~4D;uBkw@7es(oZL@J>JYtCvenvE{rSs z;5fapra-ok$wMj=gDC#_=D~+^xUM+o?n5Gv;LQ2ghXl^|EPzB3&tcBO-k{$>S!PbVM0IrTXgEB#x2w{y|`wR7RXrwUaI>@%9`{wlLtg8%o5$h-|$hN&GS;sjDf{9=qeV4c=dRfF(uw`G`Qu42o7 zNv<=ttkY!`c&C=Ub9Z>BSG;o{d8Ztg?B3CVh#SF#6oDfeEi#2ki#+i&HU9)@VlT^m zGkU)|y(vmbG{GuPG$M$GE3)yA)#2e6JTqGw!G@_|6?mpFD5>}ldDd@rcX+02kJ*ja zRHAU6_51BE|0#H82%eQ={eovyIf`cELAR$C0V9@%MZhRl)FMX^)zXVB;i#7N%bzGs z?4`MH)r?nXJ4j_(E#CB9;{0VZ#UatFg6n}NHqZOqpy6q%8LQ0y6 sWT$=iKeHdg%1kW)03VA81ONa4009360763o02=@U00000000000P*A!tpET3 diff --git a/out_test/input.muts.vcf.gz.tbi b/out_test/input.muts.vcf.gz.tbi deleted file mode 100644 index 363baefe5ad66fb89ac08755084803b7445eef98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 632 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 T&ib(nt>TykAVmP5u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/obs_drv2.vcf b/out_test/obs_drv2.vcf deleted file mode 100644 index f86c941..0000000 --- a/out_test/obs_drv2.vcf +++ /dev/null @@ -1,18 +0,0 @@ -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 diff --git a/out_test/obs_genes.lof.vcf b/out_test/obs_genes.lof.vcf deleted file mode 100644 index 5f7d20d..0000000 --- a/out_test/obs_genes.lof.vcf +++ /dev/null @@ -1,2 +0,0 @@ -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=LoF GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/obs_muts.vcf b/out_test/obs_muts.vcf deleted file mode 100644 index 76274cc..0000000 --- a/out_test/obs_muts.vcf +++ /dev/null @@ -1,5 +0,0 @@ -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;DRV=missense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;DRV=nonsense GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 diff --git a/out_test/obs_pass.vcf b/out_test/obs_pass.vcf deleted file mode 100644 index 10cadd8..0000000 --- a/out_test/obs_pass.vcf +++ /dev/null @@ -1,18 +0,0 @@ -chr1 161193208 77c913be-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=63;MP=1;GP=1.8e-07;TG=CC/AACCC;TP=0.89;SG=CC/AAACC;SP=0.091;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=ADAMTS4|CCDS1223.1|r.2340+5g>u|c.1911+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:12:0:0:0:15:0:0:0 0|1:9:12:0:0:5:9:1:0:0.39 -chr1 219210652 77cc542a-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=91;MP=1;GP=3e-13;TG=GG/AAAAG;TP=0.64;SG=GG/AAAGG;SP=0.36;ASRD=0.92;CLPM=0;ASMD=139.5;VT=Sub;VD=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=LYPLAL1|CCDS1522.1|r.524+5g>a|c.477+5G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:26:0:0:0:21:0:0 0|1:17:1:7:0:13:0:6:0:0.68 -chr1 247934046 77ce1eae-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=76;MP=1;GP=1.5e-13;TG=CC/AACCC;TP=0.7;SG=CC/ACCCC;SP=0.28;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=OR2AJ1|ENST00000318244|r.580c>a|c.278C>A|p.S93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:26:0:0:0 0|1:2:9:0:0:7:10:0:0:0.32 -chr10 113160663 77deb084-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=72;MP=1;GP=1.1e-09;TG=CC/CCTTT;TP=0.54;SG=CC/CCCTT;SP=0.46;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TCF7L2|CCDS53577.1|r.1713c>u|c.1363C>T|p.R455*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:17:0:0:1:17:0:0:0 0|1:0:13:0:8:0:6:0:10:0.49 -chr12 25245350 77f87708-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=96;MP=1;GP=2e-12;TG=CC/CTTTT;TP=0.93;SG=CC/CCTTT;SP=0.07;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=KRAS|CCDS8703.1|r.99g>a|c.35G>A|p.G12D|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:22:0:0:0:22:0:0:0 0|1:0:7:0:16:1:6:0:22:0.73 -chr13 43888891 780b9c20-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=89;MP=1;GP=1.9e-12;TG=GG/GGGGT;TP=1;SG=GG/GGGTT;SP=0.0017;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=LACC1|CCDS9391.1|r.1527g>u|c.1042G>T|p.E348*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:23:0:0:0:21:0:0 0|1:0:0:22:3:0:0:17:3:0.13 -chr15 44715437 781d409c-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=77;MP=1;GP=6.4e-14;TG=CC/TTTTT;TP=0.96;SG=CC/CTTTT;SP=0.036;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=B2M|CCDS10113.1|r.152c>u|c.82C>T|p.Q28*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:33:0:0:0:16:1:0:0 1|1:0:0:0:7:0:1:0:19:0.96 -chr18 51078304 783e0840-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=65;MP=1;GP=2.1e-13;TG=GG/AAAAA;TP=0.76;SG=GG/AAAAG;SP=0.23;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583;VC=missense;VW=SMAD4|CCDS11950.1|r.2034g>a|c.1496G>A|p.C499Y|protein_coding:exon:CDS:substitution:codon_variant:non_synonymous_codon|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001583 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:25:0:0:0:22:0:0 1|1:8:0:0:0:9:0:1:0:0.94 -chr18 56686854 783e6100-df72-11e9-aae8-d600ec72acc9 G T . PASS DP=69;MP=1;GP=1.7e-13;TG=GG/GGTTT;TP=0.75;SG=GG/GTTTT;SP=0.13;ASRD=0.87;CLPM=0;ASMD=131;VT=Sub;VD=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=WDR7|CCDS11962.1|r.809-1g>u|c.598-1G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:29:0:0:0:19:0:0 0|1:0:0:6:7:1:0:2:5:0.57 -chr19 45821379 784421ee-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=51;MP=1;GP=2.8e-06;TG=CC/AAACC;TP=0.85;SG=CC/AAAAC;SP=0.1;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=SYMPK|CCDS12676.2|r.3138+5g>u|c.2893+5G>T|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:14:0:0:0:9:0:0:0 0|1:8:5:0:0:9:6:0:0:0.61 -chr2 1453776 78468510-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=71;MP=1;GP=8.3e-12;TG=CC/CCCTT;TP=0.68;SG=CC/CCTTT;SP=0.31;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TPO|CCDS1643.1|r.656c>u|c.565C>T|p.R189*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:25:0:0:0:17:0:0:0 0|1:0:9:0:6:0:7:0:7:0.45 -chr2 96610725 785c6560-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=81;MP=0.88;GP=2.5e-09;TG=CC/CCCCT;TP=0.88;SG=CC/CCCCC;SP=0.12;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576;VC=ess_splice;VW=KANSL3|CCDS46361.1|r.1396+1g>a|c.1319+1G>A|p.?|protein_coding:CDS:extended_cis_splice_site:substitution:splice_site_variant:transcript_variant|SO:0000010:SO:0000316:SO:0001993:SO:1000002:SO:0001629:SO:0001576 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:21:0:0:0:12:0:0:0 0|1:0:23:0:3:0:20:0:2:0.1 -chr2 165901790 78635988-df72-11e9-aae8-d600ec72acc9 G A . PASS DP=81;MP=1;GP=2.1e-12;TG=GG/AAAAG;TP=0.65;SG=GG/AAAGG;SP=0.35;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTC21B|CCDS33315.1|r.2827c>u|c.2689C>T|p.Q897*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:22:0:0:0:22:0:0 0|1:15:0:7:0:11:0:4:0:0.7 -chr2 178775881 7864149a-df72-11e9-aae8-d600ec72acc9 C A . PASS DP=67;MP=1;GP=4.5e-10;TG=CC/AAACC;TP=0.52;SG=CC/AACCC;SP=0.48;ASRD=0.93;CLPM=0;ASMD=141;VT=Sub;VD=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=TTN|CCDS59435.1|r.6208g>u|c.5983G>T|p.E1995*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:18:0:0:0:18:0:0:0 0|1:10:6:0:0:5:10:0:0:0.48 -chr4 47645090 78b1b89e-df72-11e9-aae8-d600ec72acc9 T A . PASS DP=71;MP=1;GP=1.6e-09;TG=TT/ATTTT;TP=0.99;SG=TT/AATTT;SP=0.014;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=CORIN|CCDS3477.1|r.1948a>u|c.1948A>T|p.K650*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:0:0:18:0:0:0:16:0 0|1:3:0:0:19:3:0:0:12:0.16 -chr5 17634694 78c6c4be-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=85;MP=1;GP=2.3e-12;TG=CC/CCCCT;TP=0.61;SG=CC/CCCTT;SP=0.39;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=AC233724.12|ENST00000512227|r.235c>u|c.235C>T|p.Q79*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:23:0:0:0:21:0:0:0 0|1:0:10:0:7:0:20:0:4:0.27 -chr5 112815507 78d23984-df72-11e9-aae8-d600ec72acc9 C T . PASS DP=74;MP=1;GP=3.7e-15;TG=CC/TTTTT;TP=0.87;SG=CC/CTTTT;SP=0.13;ASRD=0.97;CLPM=0;ASMD=146;VT=Sub;VD=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=APC|CCDS4107.1|r.903c>u|c.847C>T|p.R283*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:0:28:0:0:0:25:0:0:0 1|1:0:0:0:11:0:1:0:9:0.95 -chrX 135545510 7928ae68-df72-11e9-aae8-d600ec72acc9 A T . PASS DP=84;MP=1;GP=2.7e-11;TG=AA/AAAAT;TP=1;SG=AA/AAATT;SP=0.0022;ASRD=0.95;CLPM=0;ASMD=143.5;VT=Sub;VD=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587;VC=nonsense;VW=INTS6L|CCDS35401.1|r.611a>u|c.277A>T|p.R93*|protein_coding:exon:CDS:substitution:codon_variant:stop_gained|SO:0000010:SO:0000147:SO:0000316:SO:1000002:SO:0001581:SO:0001587 GT:FAZ:FCZ:FGZ:FTZ:RAZ:RCZ:RGZ:RTZ:PM 0|0:18:0:0:0:22:0:0:0:0 0|1:18:0:0:3:20:0:0:3:0.14 From 608f75626f902424d5830f73dd244d611c7b7747 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Fri, 3 Jul 2020 15:25:48 +0100 Subject: [PATCH 13/16] added docker file --- Dockerfile | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..5e200dd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,56 @@ +FROM ubuntu:16.04 +MAINTAINER cgphelp@sanger.ac.uk + +LABEL uk.ac.sanger.cgp="Cancer Genome Project, Wellcome Sanger Institute" \ + version="1.0.0" \ + description="Tool to perform vcf file annotation" + + + +USER root + +ENV VERSION 1.0.0 +ENV OPT /opt/wtsi-cgp +ENV PATH $OPT/bin:$PATH +ENV LD_LIBRARY_PATH $OPT/lib + +# install system tools +RUN apt-get update && \ + apt-get install -yq --no-install-recommends lsb-release && \ + apt-get update && \ + apt-get install bcftools \ + apt-get install tabix \ + apt-get install -qy --no-install-recommends \ + apt-transport-https \ + locales \ + libcairo2-dev \ + python3 \ + python3-dev \ + python3-setuptools \ + python3-pip \ + python3-wheel \ + unattended-upgrades && \ + unattended-upgrade -d -v && \ + apt-get remove -yq unattended-upgrades && \ + apt-get autoremove -yq + +RUN locale-gen en_US.UTF-8 +RUN update-locale LANG=en_US.UTF-8 + +COPY requirements.txt $OPT/requirements.txt +RUN pip3 --no-cache-dir install -r $OPT/requirements.txt +# install annotatevcf +RUN pip3 --no-cache-dir install https://github.com/cancerit/pyCRISPRcleanR/releases/download/${VERSION}/annotateVcf-${VERSION}-py3-none-any.whl + +### security upgrades and cleanup +RUN apt-get -yq update && \ + apt-get -yq install unattended-upgrades && \ + unattended-upgrades + +RUN adduser --disabled-password --gecos '' ubuntu && chsh -s /bin/bash && mkdir -p /home/ubuntu + +USER ubuntu + +WORKDIR /home/ubuntu + +CMD ["/bin/bash"] From c64bd0fedefdb3915ddffbdf17a9e0993ddeb02c Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Thu, 9 Jul 2020 19:29:26 +0100 Subject: [PATCH 14/16] Feature/review (#1) (#2) * Initial commit * first_commit * add first working version * added consequences from file and method to generate intermediate files in a tmpfolder * added flag to remove tmp files * updated README * added README and tests first draft * commit before tests * working version with tests * removed testout * final wotking version * final wotking version * added docker file * updated travis ci to install pyhton * cooercted package name * updated setup.py to copy accessory files * added review suggestions * updated docker * added required blan line before def * incoporated review suggestions --- .gitignore | 1 + .travis.yml | 48 +++------------- Dockerfile | 95 +++++++++++++++++++------------ README.md | 11 +++- annotate/annotate_cmd.py | 9 +-- annotate/config/drvData.json | 5 +- annotate/formatInput.py | 17 ++---- annotate/staticMethods.py | 81 +++++++++++--------------- requirements.txt | 1 - setup.py | 5 +- tests/test_check_combined_data.py | 14 ++--- tests/test_check_input.py | 5 -- tests/test_drvData.json | 4 +- 13 files changed, 135 insertions(+), 161 deletions(-) diff --git a/.gitignore b/.gitignore index cd44d33..30765ca 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +out* # PyInstaller # Usually these files are written by a python script from a template diff --git a/.travis.yml b/.travis.yml index 9f3c6f7..8b79991 100755 --- a/.travis.yml +++ b/.travis.yml @@ -4,45 +4,13 @@ notifications: email: false slack: wtsi-cgpit:ptUMR1tkNyZJYd9TpGoss8WR -env: - global: - - CC_TEST_REPORTER_ID=747d8a7fc1700cea5c7e07aba5de7a70acd6a695c7ff481852bbcf95c3f1086c - -addons: - apt: - packages: - - build-essential # everything - - zlib1g-dev # many - - libcurl4-openssl-dev # many - - unzip # kentools/pcap - - libcairo2-dev # give png.h for kentsrc and used by R in later components - - time - - curl - -before_install: # installs bcftools and tabix - - sudo apt-get update - - sudo apt-get install -y bcftools - - sudo apt-get install -y tabix - -language: python - -python: - - "3.7.2" - -install: - - pip install -r requirements.txt - -before_script: - - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter - - chmod +x ./cc-test-reporter - - ./cc-test-reporter before-build +sudo: false +services: + - docker script: - - which python - - pytest --cov-report term --cov-report xml --cov-fail-under=50 --cov=pyCRISPRcleanR - - coverage xml - -after_script: - - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT - -sudo: false + - set -e + - echo 'Build and check docker image' + - docker build -t annotatevcf . + - docker images | grep -c annotatevcf + - docker run -t --rm annotatevcf annotateVcf -h \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5e200dd..1a7a867 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,51 +1,76 @@ -FROM ubuntu:16.04 + +FROM ubuntu:20.04 as builder +USER root + MAINTAINER cgphelp@sanger.ac.uk +ENV ANNOTATEVCF_VER '1.0.0' + +# install system tools +RUN apt-get -yq update +RUN apt-get install -yq --no-install-recommends \ +locales \ +g++ \ +make \ +gcc \ +pkg-config \ +python3 python3-dev python3-pip python3-setuptools python3-wheel \ +zlib1g-dev libbz2-dev liblzma-dev libcurl4-gnutls-dev \ +bcftools tabix git + +ENV CGP_OPT /opt/wtsi-cgp +RUN mkdir $CGP_OPT +ENV PYTHONPATH $CGP_OPT/python-lib/lib/python3.6/site-packages + +RUN locale-gen en_US.UTF-8 +RUN update-locale LANG=en_US.UTF-8 +ENV LC_ALL en_US.UTF-8 +ENV LANG en_US.UTF-8 + +COPY requirements.txt $CGP_OPT/requirements.txt +RUN pip3 --no-cache-dir install -r $CGP_OPT/requirements.txt +# install annotatevcf +RUN pip3 --no-cache-dir install https://github.com/cancerit/annotateVCF/releases/download/${ANNOTATEVCF_VER}/annotateVcf-${ANNOTATEVCF_VER}-py3-none-any.whl + +COPY .. + +FROM ubuntu:20.04 + LABEL uk.ac.sanger.cgp="Cancer Genome Project, Wellcome Sanger Institute" \ version="1.0.0" \ description="Tool to perform vcf file annotation" +### security upgrades and cleanup +RUN apt-get -yq update +RUN apt-get install -yq --no-install-recommends \ +apt-transport-https \ +locales \ +ca-certificates \ +time \ +unattended-upgrades \ +python3 \ +zlib1g-dev libbz2-dev liblzma-dev libcurl4-gnutls-dev && \ +unattended-upgrade -d -v && \ +apt-get remove -yq unattended-upgrades && \ +apt-get autoremove -yq -USER root - -ENV VERSION 1.0.0 -ENV OPT /opt/wtsi-cgp -ENV PATH $OPT/bin:$PATH -ENV LD_LIBRARY_PATH $OPT/lib - -# install system tools -RUN apt-get update && \ - apt-get install -yq --no-install-recommends lsb-release && \ - apt-get update && \ - apt-get install bcftools \ - apt-get install tabix \ - apt-get install -qy --no-install-recommends \ - apt-transport-https \ - locales \ - libcairo2-dev \ - python3 \ - python3-dev \ - python3-setuptools \ - python3-pip \ - python3-wheel \ - unattended-upgrades && \ - unattended-upgrade -d -v && \ - apt-get remove -yq unattended-upgrades && \ - apt-get autoremove -yq RUN locale-gen en_US.UTF-8 RUN update-locale LANG=en_US.UTF-8 -COPY requirements.txt $OPT/requirements.txt -RUN pip3 --no-cache-dir install -r $OPT/requirements.txt -# install annotatevcf -RUN pip3 --no-cache-dir install https://github.com/cancerit/pyCRISPRcleanR/releases/download/${VERSION}/annotateVcf-${VERSION}-py3-none-any.whl -### security upgrades and cleanup -RUN apt-get -yq update && \ - apt-get -yq install unattended-upgrades && \ - unattended-upgrades +ENV CGP_OPT /opt/wtsi-cgp +ENV PATH $CGP_OPT/bin:$CGP_OPT/python-lib/bin:$PATH +ENV PYTHONPATH $CGP_OPT/python-lib/lib/python3.6/site-packages +ENV LD_LIBRARY_PATH $OPT/lib +ENV LC_ALL en_US.UTF-8 +ENV LANG en_US.UTF-8 + +RUN mkdir -p $CGP_OPT +COPY --from=builder $CGP_OPT $CGP_OPT + +## USER CONFIGURATION RUN adduser --disabled-password --gecos '' ubuntu && chsh -s /bin/bash && mkdir -p /home/ubuntu diff --git a/README.md b/README.md index 5c67bd5..006fe46 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Various exceptions can occur for malformed input files. ### inputFormat - * ```VCF file``` snp or indel vcf file annotated using [VAGrENT] + * ```VCF file``` snv or indel vcf file annotated using [VAGrENT] * ```drvData.json``` file containg paths to driver annotation data (read from deafult location annotate/config): * ```annotate/config/drvData``` folder containing driver annotation reference files as listed below * ```lof_genes_v1.0.txt``` list of known loss of function [LoF] genes @@ -61,7 +61,9 @@ Release `.whl` files are generated as part of the release process and can be fou ### Package Dependancies -`pip` will install the relevant dependancies, listed here for convenience, please refer requirements.txt for versions: + +`pip` will install the relevant dependancies, listed here for convenience, please refer requirements.txt for versions. + ## Development environment @@ -87,6 +89,10 @@ in the base of the clone: ### Development Dependencies +pytest +radon +pytest-cov + #### Setup VirtualEnv ``` @@ -102,6 +108,7 @@ For testing/coverage (`./run_tests.sh`) ``` source env/bin/activate # if not already in env pip install pytest +pip install radon pip install pytest-cov ``` diff --git a/annotate/annotate_cmd.py b/annotate/annotate_cmd.py index 813f05b..8be4c95 100644 --- a/annotate/annotate_cmd.py +++ b/annotate/annotate_cmd.py @@ -5,20 +5,21 @@ import pkg_resources import logging.config -# loda config and reference files.... + +# load config and reference files.... + configdir = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config/') log_config = configdir + 'logging.conf' drv_json = configdir + 'drvData.json' drv_data = configdir + 'drvData' logging.config.fileConfig(log_config) log = logging.getLogger(__name__) - -sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) version = pkg_resources.require("annotateVcf")[0].version def main(): - usage = "\n %prog [options] -vcf input.vcf -drv drver.json " + + usage = "\n %prog [options] -vcf input.vcf [-drv_json test.json -drv_data test_dir] " optParser = argparse.ArgumentParser(prog='annotateVcf', formatter_class=argparse.ArgumentDefaultsHelpFormatter) diff --git a/annotate/config/drvData.json b/annotate/config/drvData.json index e08c1d9..4a003b8 100644 --- a/annotate/config/drvData.json +++ b/annotate/config/drvData.json @@ -1,6 +1,7 @@ { - "drv_genes":"lof_genes_v1.0.txt", - "drv_genes_prev":"lof_genes_previous_symbol.v1.0.txt", + "drv_genes":"lof_genes_v1.0.txt", + "drv_genes_prev":"lof_genes_previous_symbol.v1.0.txt", + "drv_mut":"driver_mutations_grch38_v1.0.tsv.gz", "lof_consequences":["stop_lost","start_lost","ess_splice","frameshift","nonsense"], "header_info":"vcf_info.txt", diff --git a/annotate/formatInput.py b/annotate/formatInput.py index a12537d..7089aa3 100644 --- a/annotate/formatInput.py +++ b/annotate/formatInput.py @@ -9,7 +9,7 @@ log = logging.getLogger(__name__) ''' - This code run's bcftools to annoate driver gene and varinat sites + This code runs bcftools to annoate driver gene and variant sites ''' @@ -23,12 +23,7 @@ def check_input(self): check input type and presence of user supplied input files """ - super().check_input() - input_type = [] - - for infile in ([self.vcf_file]): - input_type.append(SM.input_checker(infile)) - return input_type + return [SM.input_checker(infile) for infile in [self.vcf_file]] def run_analysis(self): """ @@ -42,7 +37,7 @@ def run_analysis(self): outputPath = outdir + '/out_anotatevcf/' os.makedirs(outputPath, exist_ok=True) # check input files - (vcf_status) = self.check_input() + vcf_status = self.check_input() if vcf_status[0] == 'y': log.info("input file checks PASSED, running analysis, .....") @@ -52,7 +47,7 @@ def run_analysis(self): (drv_genes, drv_genes_prev, drv_muts, header_file, genome_loc, lof_consequences) = SM.prepare_ref_data(drv_json, drv_data) with SM.tempdir(outputPath) as base_dir: - logging.info(base_dir) + logging.info('Annotated vcf written in: {}'.format(base_dir)) outfile_name = base_dir + '/' + file_name final_output = outputPath + file_name if keepTmp: @@ -78,8 +73,8 @@ def run_analysis(self): SM.concat_results(drv_mut_vcf, lof_drv_gene_vcf, filtered_vcf, final_output + '.drv' + ext) logging.info("analysis completed successfully") - logging.info("temporary files will be removed if flag -tmp is not set") - + if not keepTmp: + logging.info("temporary files are removed since -tmp is not set by user") else: sys.exit('Input data is not in required format OR input file does \ not exists, see inputFormat in README file') diff --git a/annotate/staticMethods.py b/annotate/staticMethods.py index d79b6ce..d505a0b 100644 --- a/annotate/staticMethods.py +++ b/annotate/staticMethods.py @@ -34,59 +34,48 @@ class StaticMthods(object): def __init__(self): super().__init__() + @staticmethod + def input_checker(infile): """ checks user input file and returns it's type """ try: - if os.path.exists(infile): + if os.path.isfile(infile): return 'y' else: return None - except IsADirectoryError: - return None except IOError as ioe: sys.exit('Error in reading input file{}:{}'.format(ioe.args[0], infile)) # ------------------------------Analysis methods--------------------------------- @staticmethod def prepare_ref_data(json_file, ref_dir): + config_param = [] try: if json_file is None: sys.exit('Driver reference json configuration file must be provided') with open(json_file, 'r') as cfgfile: cfg = json.load(cfgfile) path_dict = StaticMthods._format_dir_input(ref_dir) - if path_dict[cfg['drv_genes']]: - drv_genes = path_dict[cfg['drv_genes']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_genes'])) - if path_dict[cfg['drv_genes_prev']]: - prev_genes = path_dict[cfg['drv_genes_prev']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_genes_prev'])) - if path_dict[cfg['drv_mut']]: - drv_mut = path_dict[cfg['drv_mut']] - else: - sys.exit('paramater not found {}'.format(cfg['drv_mut'])) - if path_dict[cfg['header_info']]: - header_info = path_dict[cfg['header_info']] - else: - sys.exit('paramater not found {}'.format(cfg['header_info'])) - if path_dict[cfg['genome_loc']]: - genome_loc = path_dict[cfg['genome_loc']] - else: - sys.exit('paramater not found {}'.format(cfg['genome_loc'])) - if cfg['lof_consequences']: - lof_consequences = cfg['lof_consequences'] - else: - sys.exit('paramater not found {}'.format(cfg['lof_consequences'])) + my_file_param = ('drv_genes', 'drv_genes_prev', 'drv_mut', + 'header_info', 'genome_loc') + for prm in my_file_param: + config_param.append(StaticMthods._ge_param(path_dict, cfg[prm])) + config_param.append(StaticMthods._ge_param(cfg, 'lof_consequences')) except json.JSONDecodeError as jde: sys.exit('json error:{}'.format(jde.args[0])) except FileNotFoundError as fne: sys.exit('Can not find json file:{}'.format(fne.args[0])) - return (drv_genes, prev_genes, drv_mut, header_info, genome_loc, lof_consequences) + return config_param + + @staticmethod + def _ge_param(path_dict, prm): + if path_dict.get(prm, None): + return path_dict.get(prm, None) + else: + sys.exit('paramater not found {}'.format(prm)) @staticmethod def get_drv_gene_list(drv_genes): @@ -140,29 +129,27 @@ def get_file_metadata(full_file_name): def get_filtered_vcf(vcf, outfile_name): """ :param vcf: input vcf file - :param filename: filename no extension - :param ext: file extension - :param outdir: + + :param outfile_name: filename no extension :return: filtered var vcf outfile """ - global FILTER_VARS + cmd = FILTER_VARS.format(vcf, outfile_name, outfile_name) StaticMthods.run_command(cmd) return outfile_name @staticmethod - def map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_name): + + def map_drv_genes(filtered_vcf, info_vc_prm, genome_loc, header_file, outfile_name): """ :param filtered_vcf: read filtered vcf file - :param filename: oufile name wiyhout extension - :param ext: file extension + :param info_vc_prm: vagrent classification paramter value :param genome_loc: genome location :param header_file: vcf custom header file - :param outdir: output directory + :param outfile_name: vcf oufile :return: """ - global MAP_GENES - cmd = MAP_GENES.format(genome_loc, info_vcf_prm, header_file, filtered_vcf, outfile_name) + cmd = MAP_GENES.format(genome_loc, info_vc_prm, header_file, filtered_vcf, outfile_name) StaticMthods.run_command(cmd) return outfile_name @@ -170,10 +157,11 @@ def map_drv_genes(filtered_vcf, info_vcf_prm, genome_loc, header_file, outfile_n def filter_lof_genes(drv_gene_vcf, lof_gene_list, prev_gene_dict, out_filename): """ :param drv_gene_vcf: - :param drv_genes: + :param lof_gene_list: :param prev_gene_dict: :param out_filename: - :return: + :return: vcf with lof variant locations + """ fh = open(out_filename, "w") with open(drv_gene_vcf) as gene_f: @@ -204,7 +192,6 @@ def map_drv_mutations(filtered_vcf, drv_muts, header_file, outfile_name): :param outfile_name: :return: """ - global MAP_MUTATIONS cmd = MAP_MUTATIONS.format(drv_muts, header_file, filtered_vcf, outfile_name, outfile_name) StaticMthods.run_command(cmd) return outfile_name @@ -219,7 +206,6 @@ def concat_results(drv_muts, lof_vcf, filtered_vcf, outfile_name): :param outfile_name: :return: """ - global CONCAT_VCF cmd = CONCAT_VCF.format(drv_muts, lof_vcf, filtered_vcf, outfile_name, outfile_name) StaticMthods.run_command(cmd) return @@ -227,7 +213,6 @@ def concat_results(drv_muts, lof_vcf, filtered_vcf, outfile_name): @staticmethod def unheader_vcf(header_vcf, unheader_vcf): # only used for testing ... - global UNHEADER_VCF cmd = UNHEADER_VCF.format(header_vcf, unheader_vcf) StaticMthods.run_command(cmd) return unheader_vcf @@ -253,10 +238,11 @@ def run_command(cmd): if (exit_code == 0): logging.info("Command run successfully:\n{}\n".format(cmd)) else: - logging.debug("Error: bcftools exited with non zero exit \ - status, please check log file more details") + logging.debug("Error: command exited with non zero exit \ + status, please check log file for more details") logging.error("OUT:{}:Error:{}:Exit:{}".format(out, error, exit_code)) - return 0 + return + except OSError as oe: logging.error("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) sys.exit("Unable to run command:{} Error:{}".format(cmd, oe.args[0])) @@ -270,4 +256,5 @@ def tempdir(mypath): try: shutil.rmtree(path) except IOError: - sys.stderr.writie('Failed to clean up temp dir {}'.format(path)) + sys.stderr.write('Failed to clean up temp dir {}'.format(path)) + diff --git a/requirements.txt b/requirements.txt index a1a10c4..4634cae 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -pip==10.0.1 tzlocal==1.5.1 pytest==3.5.1 radon==2.2.0 diff --git a/setup.py b/setup.py index 21b0c3c..9629540 100644 --- a/setup.py +++ b/setup.py @@ -7,13 +7,12 @@ 'name': 'annotateVcf', 'description': 'Tool to annotate vcf files...', 'author': 'Shriram Bhosle', - 'url': 'https://gitlab.com/translation/annotatevcf', + 'url': 'https://github.com/cancerIT/annotateVcf', 'author_email': 'cgphelp@sanger.ac.uk', 'python_requires': '>= 3.3', - 'setup_requires': ['pytest','pytest-cover', 'radon'], 'install_requires': ['tzlocal'], 'packages': ['annotate'], - 'package_data': {'annotate':['config/*.conf','config/*.tbi','config/*.tab.gz']}, + 'package_data': {'annotate':['config/*.conf','config/drvData/*']}, 'entry_points': { 'console_scripts': ['annotateVcf=annotate.annotate_cmd:main'], } diff --git a/tests/test_check_combined_data.py b/tests/test_check_combined_data.py index e7ba589..135b91d 100755 --- a/tests/test_check_combined_data.py +++ b/tests/test_check_combined_data.py @@ -10,7 +10,6 @@ of archCompare ''' - class TestClass(): pass @@ -38,16 +37,17 @@ def test_static_methods(self): ext='.vcf.gz' outfile_name = outputPath + '/' + file_name - exp_drv_gene_list=['APC', 'B2M'] + exp_drv_gene_list=['APC', 'B2M'] exp_drv_gene_prev_dict={'ATD': 'ATM', 'ATC': 'ATM', 'ATDC': 'ATM', 'ATA': 'ATM'} # create object for static class .... - so = sm.StaticMthods() + so=sm.StaticMthods() exp_metadata = (file_name, ext) obs_metadata = so.get_file_metadata(vcf_file) assert exp_metadata == obs_metadata, 'get_file_metadata test OK' - exp_ref_data=(drv_genes, drv_genes_prev, drv_muts, header_file,genome_loc, lof_consequences) + exp_ref_data=[drv_genes, drv_genes_prev, drv_muts, header_file,genome_loc, lof_consequences] + obs_ref_data = so.prepare_ref_data(driver_json,driver_data) assert exp_ref_data == obs_ref_data, 'prepare_ref_data test OK' @@ -90,8 +90,4 @@ def test_static_methods(self): exp_drv_vcf_sub = so.unheader_vcf(drv_vcf, outputPath+'/exp_drv.vcf') assert filecmp.cmp(exp_drv_vcf_sub, obs_drv_vcf_sub, shallow=True), 'Final driver records in vcf files are identical OK' - - -if __name__ == '__main__': - mytests = TestClass() - mytests() + \ No newline at end of file diff --git a/tests/test_check_input.py b/tests/test_check_input.py index aa2aefe..57bc032 100755 --- a/tests/test_check_input.py +++ b/tests/test_check_input.py @@ -17,11 +17,6 @@ class TestClass(): def test_file_input(self): # check input type function - #for infile in ([self.vcf_file, self.drv_mut, self.genome_tab, self.lof_consq , self.header_info] ) : my_input=fc.AnnotateVcf(vcf_file=self.vcf_file,driver_data=self.driver_data, driver_json=self.driver_json, outdir="../out_test", keepTmp=True) print(self.vcf_file) assert ['y'] == my_input.check_input(),'input_check test OK' - -if __name__ == '__main__': - mytests=TestClass() - mytests() diff --git a/tests/test_drvData.json b/tests/test_drvData.json index ccbb24b..e55d555 100644 --- a/tests/test_drvData.json +++ b/tests/test_drvData.json @@ -1,6 +1,6 @@ { - "drv_genes":"lof_genes_v1.0.txt", - "drv_genes_prev":"lof_genes_previous_symbol.v1.0.txt", + "drv_genes":"lof_genes_v1.0.txt", + "drv_genes_prev":"lof_genes_previous_symbol.v1.0.txt", "drv_mut":"driver_mutations_test.tsv.gz", "lof_consequences":["stop_lost","start_lost","ess_splice","frameshift","nonsense"], "header_info":"vcf_info.txt", From e15fa70043941a5941bf945d707be012e7ada5c4 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Fri, 10 Jul 2020 08:17:00 +0100 Subject: [PATCH 15/16] updated README, removed requirements.txt --- .dockerignore | 8 ++++++++ CHANGES.md | 2 +- README.md | 4 ---- requirements.txt | 4 ---- setup.py | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 .dockerignore delete mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..5513244 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +/LICENCE +/INSTALL +/CHANGES.md +/.gitignore +/.git +/.travis.yml +/env +/dist diff --git a/CHANGES.md b/CHANGES.md index ffdf69c..a62c693 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,3 @@ ## 1.0.0 -* First commit +* First working release diff --git a/README.md b/README.md index 49da6ea..57a0c8a 100644 --- a/README.md +++ b/README.md @@ -59,10 +59,6 @@ pip install annotateVcf.X.X.X-py3-none-any.whl Release `.whl` files are generated as part of the release process and can be found on the [release page][annotateVcf-releases] -### Package Dependancies - -`pip` will install the relevant dependancies, listed here for convenience, please refer requirements.txt for versions. - ## Development environment This project uses git pre-commit hooks. As these will execute on your system it diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 4634cae..0000000 --- a/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -tzlocal==1.5.1 -pytest==3.5.1 -radon==2.2.0 -pytest-cov==2.5.1 diff --git a/setup.py b/setup.py index 9629540..63ea689 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ 'python_requires': '>= 3.3', 'install_requires': ['tzlocal'], 'packages': ['annotate'], - 'package_data': {'annotate':['config/*.conf','config/drvData/*']}, + 'package_data': {'annotate':['config/*.conf','config/*.json','config/drvData/*']}, 'entry_points': { 'console_scripts': ['annotateVcf=annotate.annotate_cmd:main'], } From 007faddc07ab7b2b8d7e4ec7fca5c0ba67a32ae7 Mon Sep 17 00:00:00 2001 From: Shriram Bhosle Date: Fri, 10 Jul 2020 08:34:04 +0100 Subject: [PATCH 16/16] updated README, removed requirements.txt --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 57a0c8a..b0402a2 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,8 @@ This project hosts scripts to annotate VCF files using user defined driver genes ## Design -Uses [bcftools] and tabix from htslib + +Uses [bcftools], [tabix] and [bgzip] in user's path , these are part of [htslib] or can be installed separately ## Tools @@ -132,9 +133,11 @@ pip install --find-links=~/wheels annotateVcf ### Reference - [bcftools]: http://samtools.github.io/bcftools/bcftools.html + [htslib]: https://github.com/samtools/htslib + [bcftools]: https://github.com/samtools/bcftools + [tabix]: https://github.com/samtools/tabix [VAGrENT]: https://github.com/cancerit/VAGrENT - [travis-master-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=master - [travis-develop-badge]: https://travis-ci.org/cancerit/annotateVcf.svg?branch=develop + [travis-master-badge]: https://travis-ci.org/cancerit/annotateVCF.svg?branch=master + [travis-develop-badge]: https://travis-ci.org/cancerit/annotateVCF.svg?branch=develop [travis-repo]: https://travis-ci.org/cancerit/annotateVcf - [annotateVcf-releases]: https://github.com/cancerit/annotateVcf/releases + [annotateVcf-releases]: https://github.com/cancerit/annotateVCF/releases