code: def clean_assembly(gtf_file, clean=None, dirty=None):
      
      base, ext = os.path.splitext(gtf_file)
      db = gtf.get_gtf_db(gtf_file, in_memory=True)
      clean = clean if clean else base + ".clean" + ext
      dirty = dirty if dirty else base + ".dirty" + ext
      if file_exists(clean):
          return clean, dirty
      logger.info("Cleaning features with an unknown strand from the assembly.")
      with open(clean, "w") as clean_handle, open(dirty, "w") as dirty_handle:
          for gene in db.features_of_type('gene'):
              for transcript in db.children(gene, level=1):
                  if is_likely_noise(db, transcript):
                      write_transcript(db, dirty_handle, transcript)
                  else:
                      write_transcript(db, clean_handle, transcript)
      return clean, dirty
docs: clean the likely garbage transcripts from the GTF file including:
      1. any novel single-exon transcripts
      2. any features with an unknown strand