changeset 17:1a766f9f623d draft

Uploaded
author petr-novak
date Mon, 16 Sep 2019 03:54:45 -0400
parents 0e820310d4dc
children 039c45c01b47
files dante_gff_output_filtering.py dante_gff_to_dna.py test-data/toolshed.g2.bx.psu.edu_repos_petr-novak_dante_dante_1.0.0.tgz
diffstat 3 files changed, 17 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/dante_gff_output_filtering.py	Wed Sep 04 06:45:18 2019 -0400
+++ b/dante_gff_output_filtering.py	Mon Sep 16 03:54:45 2019 -0400
@@ -120,18 +120,17 @@
         domains_all = []
         start = True
         for line in gff_all:
-            attributes = line.rstrip().split("\t")[-1]
-            classification = attributes.split(";")[1].split("=")[1]
+            gff_line = parse_gff_line(line)
+            classification = gff_line['attributes']['Final_Classification']
             orig_class_dict[classification] += 1
             ## ambiguous domains filtered out automatically
             if classification != configuration.AMBIGUOUS_TAG:
-                gff_line = parse_gff_line(line)
                 al_identity = float(gff_line['attributes']['Identity'])
                 al_similarity = float(gff_line['attributes']['Similarity'])
                 al_length = float(gff_line['attributes']['Relat_Length'])
                 relat_interrupt = float(gff_line['attributes']['Relat_Interruptions'])
                 db_len_proportion = float(gff_line['attributes']['Hit_to_DB_Length'])
-                dom_type = gff_line['attributes']['Final_Classification']
+                dom_type = gff_line['attributes']['Name']
                 seq_id = gff_line['seqid']
                 xminimal = int(gff_line['start'])
                 xmaximal = int(gff_line['end'])
--- a/dante_gff_to_dna.py	Wed Sep 04 06:45:18 2019 -0400
+++ b/dante_gff_to_dna.py	Mon Sep 16 03:54:45 2019 -0400
@@ -7,7 +7,7 @@
 from collections import defaultdict
 from Bio import SeqIO
 import configuration
-
+from dante_gff_output_filtering import parse_gff_line
 t_nt_seqs_extraction = time.time()
 
 
@@ -34,7 +34,8 @@
     ''' Extract nucleotide sequences of protein domains found by DANTE from input DNA seq.
 		Sequences are saved in fasta files separately for each transposon lineage.
 		Sequences extraction is based on position of Best_Hit alignment reported by LASTAL.
-		The positions can be extended (optional) based on what part of database domain was aligned (Best_Hit_DB_Pos attribute).
+		The positions can be extended (optional) based on what part of database domain was aligned
+        (Best_Hit_DB_Pos attribute).
 		The strand orientation needs to be considered in extending and extracting the sequence itself
 	'''
     [count_comment, first_line] = check_file_start(DOM_GFF)
@@ -49,20 +50,24 @@
         allSeqs = SeqIO.to_dict(SeqIO.parse(DNA_SEQ, 'fasta'))
         seq_nt = allSeqs[seq_id_stored]
         for line in domains:
-            seq_id = line.split("\t")[0]
-            dom_type = line.split("\t")[8].split(";")[0].split("=")[1]
-            elem_type = line.split("\t")[8].split(";")[1].split("=")[1]
-            strand = line.split("\t")[6]
-            align_nt_start = int(line.split("\t")[8].split(";")[3].split(":")[
+            gff_line = parse_gff_line(line)
+            elem_type = gff_line['attributes']['Final_Classification']
+            if elem_type == configuration.AMBIGUOUS_TAG:
+                continue  # skip ambiguous classification
+            seq_id = gff_line['seqid']
+            dom_type = gff_line['attributes']['Name']
+            strand = gff_line['strand']
+            align_nt_start = int(gff_line['attributes']['Best_Hit'].split(":")[
                 -1].split("-")[0])
-            align_nt_end = int(line.split("\t")[8].split(";")[3].split(":")[
+            align_nt_end = int(gff_line['attributes']['Best_Hit'].split(":")[
                 -1].split("-")[1].split("[")[0])
             if seq_id != seq_id_stored:
                 seq_id_stored = seq_id
                 seq_nt = allSeqs[seq_id_stored]
             if EXTENDED:
                 ## which part of database sequence was aligned
-                db_part = line.split("\t")[8].split(";")[4].split("=")[1]
+                db_part = gff_line['attributes']['Best_Hit_DB_Pos']
+                ## db_part = line.split("\t")[8].split(";")[4].split("=")[1]
                 ## datatabse seq length
                 dom_len = int(db_part.split("of")[1])
                 ## start of alignment on database seq
Binary file test-data/toolshed.g2.bx.psu.edu_repos_petr-novak_dante_dante_1.0.0.tgz has changed