Sub Patterns

Ligand-----dist[min,max]-----Amino

SELECT protein_id,
       ligand_id,
       ligand_number,
       ligand_symbol,
       amino_id     AS amino<<amino id>>_id,
       amino_symbol AS amino<< amino id >>_symbol,
       amino_number AS amino<< amino id >>_number,
       dist         AS min_ligand_amino<< amino id >>
FROM   distance_ligand_amino
WHERE  ligand_symbol = <<ligand code>>
AND    amino_symbol = <<ligand code>>
AND    (
              dist >= <<dmin>>
       AND    dist <= <<dmax>>)

Ligand-----dist[min,max]-----Amino_Any

SELECT protein_id,
       ligand_id,
       ligand_number,
       ligand_symbol,
       amino_id     AS amino<< amino_any id >>_id,
       amino_symbol AS amino<< amino_any id >>_symbol,
       amino_number AS amino<< amino_any id >>_number,
       dist         AS min_ligand_amino<< amino_any id >>
FROM   distance_ligand_amino
WHERE  ligand_symbol = << ligand code >>
AND    (
              dist >= <<dmin>>
       AND    dist <= <<dmax>>)

Ligand_Any-----dist[min,max]-----Amino

SELECT protein_id,
       ligand_id,
       ligand_number,
       ligand_symbol,
       amino_id     AS amino<< amino id >>_id,
       amino_symbol AS amino<< amino id >>_symbol,
       amino_number AS amino<< amino id >>_number,
       dist         AS min_ligand_amino<< amino id >>
FROM   distance_ligand_amino
WHERE  amino_symbol = << ligand code >>
AND    (
              dist >= <<dmin>>
       AND    dist <= <<dmax>>)

Ligand_Any-----dist[min,max]-----Amino_Any

SELECT protein_id,
       ligand_id,
       ligand_number,
       ligand_symbol,
       amino_id     AS amino<< amino_any id >>_id,
       amino_symbol AS amino<< amino_any id >>_symbol,
       amino_number AS amino<< amino_any id >>_number,
       dist         AS min_ligand_amino<< amino_any id >>
FROM   distance_ligand_amino
WHERE  (
              dist >= <<dmin>>
       AND    dist <= <<dmax>>)

Amino-----dist[min,max]-----Amino

SELECT *
FROM   (
              SELECT protein_id,
                     amino1_id     AS amino<< amino 1 id >>_id,
                     amino1_symbol AS amino<< amino 1 id >>_symbol,
                     amino1_number AS amino<< amino 1 id >>_number,
                     amino2_id     AS amino<< amino 2 id >>_id,
                     amino2_symbol AS amino<< amino 2 id >>_symbol,
                     amino2_number AS amino<< amino 2 id >>_number,
                     dist          AS min_amino<< amino 1 id >>_amino<< amino 2 id >>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>)
              AND    amino1_symbol = <<amino 1 code>>
              AND    amino2_symbol = <<amino 2 code>>
              UNION
              SELECT protein_id,
                     amino2_id     AS amino<< amino 1 id >>_id,
                     amino2_symbol AS amino<< amino 1 id >>_symbol,
                     amino2_number AS amino<< amino 1 id >>_number,
                     amino1_id     AS amino<< amino 2 id >>_id,
                     amino1_symbol AS amino<< amino 2 id >>_symbol,
                     amino1_number AS amino<< amino 2 id >>_number,
                     dist          AS min_amino<< amino 1 id >>_amino<<id amino 2>>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>)
              AND    amino2_symbol = << amino 1 id >>
              AND    amino1_symbol = << amino 2 id >> ) AS q_<< amino 1 id >>_<< amino 2 id >>

Amino-----dist[min,max]-----Amino_Any

SELECT *
FROM   (
              SELECT protein_id,
                     amino1_id     AS amino<< amino id >>_id,
                     amino1_symbol AS amino<< amino id >>_symbol,
                     amino1_number AS amino<< amino id >>_number,
                     amino2_id     AS amino<< amino_any id >>_id,
                     amino2_symbol AS amino<< amino_any id >>_symbol,
                     amino2_number AS amino<< amino_any id >>_number,
                     dist          AS min_amino<< amino id >>_amino<< amino_any id >>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>)
              AND    amino1_symbol = <<amino code>>
              UNION
              SELECT protein_id,
                     amino2_id     AS amino<< amino id >>_id,
                     amino2_symbol AS amino<< amino id >>_symbol,
                     amino2_number AS amino<< amino id >>_number,
                     amino1_id     AS amino<< amino_any id >>_id,
                     amino1_symbol AS amino<< amino_any id >>_symbol,
                     amino1_number AS amino<< amino_any id >>_number,
                     dist          AS min_amino<< amino id >>_amino<< amino_any id >>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>)
              AND    amino2_symbol = << amino id >> ) AS q_<< amino id >>_<< amino_any id >>

Amino_Any -----dist[min,max]-----Amino_Any

SELECT *
FROM   (
              SELECT protein_id,
                     amino1_id     AS amino<< amino_any 1 id >>_id,
                     amino1_symbol AS amino<< amino_any 1 id >>_symbol,
                     amino1_number AS amino<< amino_any 1 id >>_number,
                     amino2_id     AS amino<< amino_any 2 id >>_id,
                     amino2_symbol AS amino<< amino_any 2 id >>_symbol,
                     amino2_number AS amino<< amino_any 2 id >>_number,
                     dist          AS min_amino<< amino_any 1 id >>_amino<< amino_any 2 id >>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>)
              UNION
              SELECT protein_id,
                     amino2_id     AS amino<< amino_any 1 id >>_id,
                     amino2_symbol AS amino<< amino_any 1 id >>_symbol,
                     amino2_number AS amino<< amino_any 1 id >>_number,
                     amino1_id     AS amino<< amino_any 2 id >>_id,
                     amino1_symbol AS amino<< amino_any 2 id >>_symbol,
                     amino1_number AS amino<< amino_any 2 id >>_number,
                     dist          AS min_amino<< amino_any 1 id >>_amino<< amino_any 2 id >>
              FROM   distance_amino_amino
              WHERE  (
                            dist >= <<dmin>>
                     AND    dist <= <<dmax>>) ) AS q_<< amino_any 1 id >>_<< amino_any 2 id >>

Amino-----next-----Amino

SELECT protein_id,
       amino1_id     AS amino<< amino 1 id >>_id,
       amino1_symbol AS amino<< amino 1 id >>_symbol,
       amino1_number AS amino<< amino 1 id >>_number,
       amino2_id     AS amino<< amino 2 id >>_id,
       amino2_symbol AS amino<< amino 2 id >>_symbol,
       amino2_number AS amino<< amino 2 id >>_number
FROM   next_amino_amino
WHERE  amino1_symbol =<< amino 1 code>>
AND    amino2_symbol =<< amino 2 code>>

Amino -----next-----Amino_Any

SELECT protein_id,
       amino1_id     AS amino<< amino id >>_id,
       amino1_symbol AS amino<< amino id >>_symbol,
       amino1_number AS amino<< amino id >>_number,
       amino2_id     AS amino<< amino_any id >>_id,
       amino2_symbol AS amino<< amino_any id >>_symbol,
       amino2_number AS amino<< amino_any id >>_number
FROM   next_amino_amino
WHERE  amino1_symbol =<< amino code>>

Amino_Any -----next-----Amino

SELECT protein_id,
       amino1_id     AS amino<< amino_any id >>_id,
       amino1_symbol AS amino<< amino_any id >>_symbol,
       amino1_number AS amino<< amino_any id >>_number,
       amino2_id     AS amino<< amino id >>_id,
       amino2_symbol AS amino<< amino id >>_symbol,
       amino2_number AS amino<< amino id >>_number
FROM   next_amino_amino
WHERE  amino2_symbol =<< amino code>>

Amino_Any -----next-----Amino_Any

SELECT protein_id,
       amino1_id     AS amino<< amino_any 1 id >>_id,
       amino1_symbol AS amino<< amino_any 1 id >>_symbol,
       amino1_number AS amino<< amino_any 1 id >>_number,
       amino2_id     AS amino<< amino_any 2 id >>_id,
       amino2_symbol AS amino<< amino_any 2 id >>_symbol,
       amino2_number AS amino<< amino_any 2 id >>_number
FROM   next_amino_amino

Amino-----gap[min,max]-----Amino

SELECT *
FROM   (big_query) as gapquery
WHERE  split_part(gapquery .<< amino 1 id >>, '_', 3)::int < split_part(gapquery .<< amino 2 id >>, '_', 3)::int)

diff= (split_part(gap_range_query .<< amino 1 id >>, '_', 3)::int  split_part(gap_range_query .<< amino 2 id >>, '_', 3)::int)SELECT *,
       diff    AS gaprange_<< amino 1 id >>_<< amino 2 id >>
FROM   (gap_1) AS gap_range_query
WHERE  (
              diff >= <<gmin>>
       AND    diff <= <<gmax>> )::int

Query

General

SELECT    *
FROM (
    (Query1 )
  AS
  Q1 NATURAL JOIN
    (Query2 )
  AS
  Q2 NATURAL JOIN
  
    (Query* )
  AS
  Q*
)
WHERE
  amino1_id <> amino2_id   AND
  amino2_id <> amino3_id   AND
               AND
  amino(i)_id <> amino(i+1) _id

Protein info

SELECT DISTINCT *
FROM
  (
  SELECT DISTINCT *
  FROM (BIG_QUERY) AS query2 ,
    (
    SELECT
      id,
      title,
      classification,
      organism
      FROM
      protein
    ) AS pq
  WHERE
    (query2.protein_id = pq.id)
    )
  AS query3
  LEFT OUTER JOIN
  (
    SELECT
      pdbid,
      cath_code,
      class_code,
      arch_code,
      topol_code,
      homol_code
    FROM
      protein_cath
  ) AS query4
   ON
  query3.protein_id = query4 .pdbid

Example

SELECT DISTINCT *
FROM  (SELECT DISTINCT *
       FROM   (SELECT *,
                      (( Split_part(gap_range_query.amino6_id, '_', 3) :: INT -
                            Split_part(gap_range_query.amino8_id, '_', 3) :: INT
                       )) ::
                      INT AS
                      gaprange_8_6
               FROM   (SELECT *
                       FROM   (SELECT *
                               FROM   (SELECT *
                                       FROM   (SELECT protein_id,
                                                      ligand_id,
                                                      ligand_number,
                                                      ligand_symbol,
                                                      amino_id     AS amino6_id,
                                                      amino_symbol AS
                                                      amino6_symbol,
                                                      amino_number AS
                                                      amino6_number,
                                                      dist         AS
                                                      min_ligand_amino6
                                               FROM   distance_ligand_amino
                                               WHERE  amino_symbol = 'G'
                                                      AND ligand_symbol = 'ATP'
                                                      AND (( dist >= 0.5
                                                             AND dist <= 7.0 )))
                                              AS q0
                                              NATURAL join (SELECT
                                              protein_id,
                                              ligand_id,
                                              ligand_number,
                                              ligand_symbol,
                                              amino_id     AS amino8_id,
                                              amino_symbol AS amino8_symbol,
                                              amino_number AS amino8_number,
                                              dist         AS min_ligand_amino8
                                                            FROM
                                              distance_ligand_amino
                                                            WHERE
                                              ligand_symbol = 'ATP'
                                              AND ((
                                                           dist >= 0.5
                                                           AND dist <= 7.0 )))
                                                           AS q1
                                              NATURAL join (SELECT *
                                                            FROM   (
                                              SELECT
                                                           protein_id,
                                                           amino1_id     AS
                                                           amino6_id,
                                                           amino1_symbol AS
                                                           amino6_symbol,
                                                           amino1_number AS
                                                           amino6_number,
                                                           amino2_id     AS
                                                           amino7_id,
                                                           amino2_symbol AS
                                                           amino7_symbol,
                                                           amino2_number AS
                                                           amino7_number,
                                                           dist          AS
                                                           min_amino6_amino7
                                                                    FROM
                                                           distance_amino_amino
                                                                    WHERE  (
                                                           ( dist >= 0.5
                                                             AND dist <= 7.0
                                                           ))
                                                                           AND
                                              amino1_symbol =
                                              'G'
                                                                           AND
                                              amino2_symbol =
                                              'K'
                                                                    UNION
                                              SELECT
                                                           protein_id,
                                                           amino2_id     AS
                                                           amino6_id,
                                                           amino2_symbol AS
                                                           amino6_symbol,
                                                           amino2_number AS
                                                           amino6_number,
                                                           amino1_id     AS
                                                           amino7_id,
                                                           amino1_symbol AS
                                                           amino7_symbol,
                                                           amino1_number AS
                                                           amino7_number,
                                                           dist          AS
                                                           min_amino6_amino7
                                                                    FROM
                                                           distance_amino_amino
                                                                    WHERE  (
                                                           ( dist >= 0.5
                                                             AND dist <= 7.0
                                                           ))
                                                                           AND
                                              amino2_symbol =
                                              'G'
                                                                           AND
                                              amino1_symbol =
                                              'K') AS
                                                                   q_67)
                                                           AS q2
                                              NATURAL join (SELECT
                                              protein_id,
                                              amino1_id     AS amino6_id,
                                              amino1_symbol AS amino6_symbol,
                                              amino1_number AS amino6_number,
                                              amino2_id     AS amino7_id,
                                              amino2_symbol AS amino7_symbol,
                                              amino2_number AS amino7_number
                                                            FROM
                                              next_amino_amino
                                                            WHERE
                                              amino1_symbol = 'G'
                                              AND amino2_symbol =
                                                  'K') AS
                                                           q3) AS
                                      query
                               WHERE  amino6_id <> amino8_id
                                      AND amino6_id <> amino7_id
                                      AND amino8_id <> amino7_id) AS gapquery
                       WHERE  Split_part(gapquery.amino8_id, '_', 3) :: INT <
                              Split_part(gapquery.amino6_id, '_', 3) :: INT) AS
                      gap_range_query
               WHERE  ( ( Split_part(gap_range_query.amino6_id, '_', 3) :: INT -
                                      Split_part(gap_range_query.amino8_id, '_',
                                      3) ::
                          INT )
                        >= 1
                        AND ( Split_part(gap_range_query.amino6_id, '_', 3) ::
                              INT -
                                    Split_part(gap_range_query.amino8_id, '_', 3
                                    ) ::
                              INT ) <=
                            1000 )) AS query2,
              (SELECT id,
                      title,
                      classification,
                      organism
               FROM   protein) AS pq
       WHERE  ( query2.protein_id = pq.id )) AS query3
      left outer join (SELECT pdbid,
                              cath_code,
                              class_code,
                              arch_code,
                              topol_code,
                              homol_code
                       FROM   protein_cath) AS query4
                   ON query3.protein_id = query4 .pdbid 
GSP4PDB is part of the services provided by the Bioinformatic Group of the University of Talca

Send your questions, suggestions or comments to the email contact: rangles@gmail.com

© 2018 Designed by Roberto García and Ph.D. Renzo Angles