Ich bin zwar noch nicht fertig aber vielleicht ist es einfacher zu verstehen, wenn ich mal code poste:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-15 -*-
import os
try:
from pysqlite2 import dbapi2 as sqlite3
except ImportError:
import sqlite3
try:
os.remove("phenome.s3db")
except:
pass
conn = sqlite3.connect("phenome.s3db")
# --------------------------------------------------------------------------------------------------------
# Tabelle 1 EST's und Sequenzlängen
sql = """
CREATE TABLE sequence (
id INTEGER PRIMARY KEY,
est TEXT,
prim INTEGER,
length INTEGER
);
"""
conn.execute(sql)
conn.commit()
data = [
{"est": "HS03I09", "prim": "3", "length": "205"},
{"est": "HV06Z06", "prim": "3", "length": "416"},
{"est": "HY01B05", "prim": "3", "length": "103"},
{"est": "HX02N09", "prim": "3", "length": "98"},
{"est": "HO15C06", "prim": "3", "length": "513"},
{"est": "HO14H18", "prim": "3", "length": "714"},
{"est": "HO15P09", "prim": "3", "length": "301"},
{"est": "HS03I09", "prim": "5", "length": "513"},
{"est": "HV06Z06", "prim": "5", "length": "301"},
{"est": "HY01B05", "prim": "5", "length": "561"},
{"est": "HX02N09", "prim": "5", "length": "693"},
{"est": "HO15C06", "prim": "5", "length": "205"},
{"est": "HO14H18", "prim": "5", "length": "514"},
{"est": "HO15P09", "prim": "5", "length": "554"},
]
sql = """
INSERT INTO sequence (
est,
prim,
length
) VALUES (
:est,
:prim,
:length
)
"""
conn.executemany(sql, data)
conn.commit()
# --------------------------------------------------------------------------------------------------------
# Tabelle 2 contigs uns EST's
sql = """
CREATE TABLE contig (
id INTEGER PRIMARY KEY,
contig TEXT,
est TEXT
);
"""
conn.execute(sql)
conn.commit()
data2 = [
{"contig":"contig1", "est": "HS03I09"},
{"contig":"contig1", "est": "HV06Z06"},
{"contig":"contig1", "est": "HY01B05"},
{"contig":"contig2", "est": "HX02N09"},
{"contig":"contig2", "est": "HO15C06"},
{"contig":"contig3", "est": "HO14H18"},
{"contig":"contig3", "est": "HO15P09"},
]
sql = """
INSERT INTO contig (
contig,
est
) VALUES (
:contig,
:est
)
"""
conn.executemany(sql, data2)
conn.commit()
# --------------------------------------------------------------------------------------------------------
conn.close()
conn = sqlite3.connect("phenome.s3db")
sql = """
SELECT
id, est
FROM
sequence
WHERE prim = 5 AND length > 400
"""
cur = conn.cursor()
cur.execute(sql)
rows = cur.fetchall()
for row in rows:
print row
conn.close()
1) Es soll in Tabelle 1 geschaut werden ob die 5 prims > 400 ist
- wenn ja, nehme ich die EST's (auch wenn der 3 prim grösser ist, es werden 5 prims bevorzugt)
- wenn nein, suche für den gleichen EST bei den 3 prims ob diese grösser als die 5 prims sind
- wenn ja nimm die 3 prims, wenn nein die 5 prims
2) das ergibt eine Liste mit den längsten EST (nach meinen Kriterien) und von welchem prim sie kommen
3) Suche in Tabelle 2 nach dem Längsten EST pro Contig, also bleibt 1 EST pro contig über
Ich hoffe das war verständlicher.
Die Daten kommen aus einem Excel Sheet, mit dem ich gerade kämpfe
