cool-seq-tool 0.10.0__py3-none-any.whl → 0.11.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -865,14 +865,14 @@ class ExonGenomicCoordsMapper:
865
865
  if use_alt_start_i and coordinate_type == CoordinateType.RESIDUE:
866
866
  genomic_pos = genomic_pos - 1 # Convert residue coordinate to inter-residue
867
867
 
868
- # Validate that the breakpoint occurs on a transcript given a gene
869
- coordinate_check = await self._validate_gene_coordinates(
870
- pos=genomic_pos, genomic_ac=genomic_ac, gene=gene
868
+ # Validate that the breakpoint between the first and last exon for the selected transcript
869
+ coordinate_check = await self._validate_genomic_breakpoint(
870
+ pos=genomic_pos, genomic_ac=genomic_ac, tx_ac=transcript
871
871
  )
872
872
  if not coordinate_check:
873
873
  return GenomicTxSeg(
874
874
  errors=[
875
- f"{genomic_pos} on {genomic_ac} does not occur within the exons for {gene}"
875
+ f"{genomic_pos} on {genomic_ac} does not occur within the exons for {transcript}"
876
876
  ]
877
877
  )
878
878
 
@@ -943,38 +943,32 @@ class ExonGenomicCoordsMapper:
943
943
  )
944
944
  return liftover_data[1] if liftover_data else None
945
945
 
946
- async def _validate_gene_coordinates(
946
+ async def _validate_genomic_breakpoint(
947
947
  self,
948
948
  pos: int,
949
949
  genomic_ac: str,
950
- gene: str,
950
+ tx_ac: str,
951
951
  ) -> bool:
952
952
  """Validate that a genomic coordinate falls within the first and last exon
953
- given a gene and accession
953
+ for a transcript on a given accession
954
954
 
955
955
  :param pos: Genomic position on ``genomic_ac``
956
956
  :param genomic_ac: RefSeq genomic accession, e.g. ``"NC_000007.14"``
957
- :param gene: A valid, case-sensitive HGNC gene symbol
957
+ :param transcript: A transcript accession
958
958
  :return: ``True`` if the coordinate falls within the first and last exon
959
- for the gene, ``False`` if not
959
+ for the transcript, ``False`` if not
960
960
  """
961
961
  query = f"""
962
962
  WITH tx_boundaries AS (
963
- SELECT
964
- tx_ac,
965
- hgnc,
966
- MIN(alt_start_i) as min_start,
967
- MAX(alt_end_i) as max_end
963
+ SELECT
964
+ MIN(alt_start_i) AS min_start,
965
+ MAX(alt_end_i) AS max_end
968
966
  FROM {self.uta_db.schema}.tx_exon_aln_v
969
- WHERE hgnc = '{gene}'
967
+ WHERE tx_ac = '{tx_ac}'
970
968
  AND alt_ac = '{genomic_ac}'
971
- GROUP BY tx_ac, hgnc
972
969
  )
973
- SELECT DISTINCT hgnc
974
- FROM tx_boundaries
970
+ SELECT * FROM tx_boundaries
975
971
  WHERE {pos} between tx_boundaries.min_start and tx_boundaries.max_end
976
- ORDER BY hgnc
977
- LIMIT 1;
978
972
  """ # noqa: S608
979
973
  results = await self.uta_db.execute_query(query)
980
974
  return bool(results)
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: cool_seq_tool
3
- Version: 0.10.0
3
+ Version: 0.11.0
4
4
  Summary: Common Operation on Lots of Sequences Tool
5
5
  Author: Kori Kuzma, James Stevenson, Katie Stahl, Alex Wagner
6
6
  License: MIT License
@@ -6,7 +6,7 @@ cool_seq_tool/handlers/__init__.py,sha256=KalQ46vX1MO4SJz2SlspKoIRy1n3c3Vp1t4Y2p
6
6
  cool_seq_tool/handlers/seqrepo_access.py,sha256=Jd19jbdUvPRPn_XWozL67ph-nSIxpb4_UUimapDrsm4,9162
7
7
  cool_seq_tool/mappers/__init__.py,sha256=O0JRxNFk8nWxD4v5ij47xelhvfVLdEXS43l2tzRuiUE,305
8
8
  cool_seq_tool/mappers/alignment.py,sha256=nV6PS3mhkQ2MD1GcpNBujBOqd3AKxYSYA9BCusFOa1o,9636
9
- cool_seq_tool/mappers/exon_genomic_coords.py,sha256=uOJGy8HFoe1mjoxnaKP9x60hcgQm03vINJpUzJfxE0A,43948
9
+ cool_seq_tool/mappers/exon_genomic_coords.py,sha256=ORYjBVaX1HO6ln0gRJyRKxUCjZrBDi4JfYQEYebxIAc,43824
10
10
  cool_seq_tool/mappers/liftover.py,sha256=lltx9zxfkrb5PHtJlKp3a39JCwPP4e0Zft-mQc1jXL8,3367
11
11
  cool_seq_tool/mappers/mane_transcript.py,sha256=C9eKEj8qhVg878oUhBKPYAZS7gpLM5aaQ0HhSkUg-2g,54365
12
12
  cool_seq_tool/resources/__init__.py,sha256=VwUC8YaucTS6SmRirToulZTF6CuvuLQRSxFfSfAovCc,77
@@ -17,8 +17,8 @@ cool_seq_tool/sources/__init__.py,sha256=51QiymeptF7AeVGgV-tW_9f4pIUr0xtYbyzpvHO
17
17
  cool_seq_tool/sources/mane_transcript_mappings.py,sha256=Q6J57O2lLWXlgKT0zq3BIwkwFawySnORHOX-UxzfyDE,5399
18
18
  cool_seq_tool/sources/transcript_mappings.py,sha256=903RKTMBO2rbKh6iTQ1BEWnY4C7saBFMPw2_4ATuudg,10054
19
19
  cool_seq_tool/sources/uta_database.py,sha256=s7BkFplD_b2AmvXq8vZSCiBuZLy8RlxAqNyf-6QtR8w,36112
20
- cool_seq_tool-0.10.0.dist-info/LICENSE,sha256=IpqC9A-tZW7XXXvCS8c4AVINqkmpxiVA-34Qe3CZSjo,1072
21
- cool_seq_tool-0.10.0.dist-info/METADATA,sha256=EOIMJIeXl9Om4LrUrr2ccPED68ou52_4lqTCrkWHzHQ,6557
22
- cool_seq_tool-0.10.0.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
23
- cool_seq_tool-0.10.0.dist-info/top_level.txt,sha256=cGuxdN6p3y16jQf6hCwWhE4OptwUeZPm_PNJlPb3b0k,14
24
- cool_seq_tool-0.10.0.dist-info/RECORD,,
20
+ cool_seq_tool-0.11.0.dist-info/LICENSE,sha256=IpqC9A-tZW7XXXvCS8c4AVINqkmpxiVA-34Qe3CZSjo,1072
21
+ cool_seq_tool-0.11.0.dist-info/METADATA,sha256=VcP6BvVyQ1YVB2u2XsZbEVd9DYYr-ZKcHadIt3ACsBY,6557
22
+ cool_seq_tool-0.11.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
23
+ cool_seq_tool-0.11.0.dist-info/top_level.txt,sha256=cGuxdN6p3y16jQf6hCwWhE4OptwUeZPm_PNJlPb3b0k,14
24
+ cool_seq_tool-0.11.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5