私はPythonで少しのプログラミング経験を持つ生物学者です。私の研究方法の1つは、このデータベースを使用して大きな遺伝子リストをプロファイリングすることです:https://david.ncifcrf.gov/ 出力のキーワード検索を行い、キーワードに関連付けられた遺伝子名を返すことができるかどうかについて誰にでも助言できますか?これは、次のような "テーブル"出力用です:https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0 バックエンドとapiオプションもあります。 すべての洞察と助言は大変ありがとうございます。Pythonでのデータマイニングのアドバイス
答えて
すべてのデータを提供するAPIがあれば、関連するほとんどすべてを自動化できます。 APIはRESTまたはSOAPのいずれかであるため、まず必要なものを見つけ出す必要があります。
APIはRESTfulなの場合:
import urllib2, json
url = "https://mysuperapiurl.com/api-ws/api/port/"
u = 'APIUsername'
p = 'APIPassword'
def encodeUserData(user, password):
return "Basic " + (user + ":" + password).encode("base64").rstrip()
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/x-www-form-urlencoded")
req.add_header('Authorization', encodeUserData(u, p))
res = urllib2.urlopen(req)
j = json.load(res) # Here is all the data from the API
json_str= json.dumps(j) # this is the same as above as string
APIがSOAPであれば、それは少し難しくなります。私がお勧めするものはzeepです。サーバーが2.6であるためにそれが不可能であるか、または何人かがそれに取り組んでいるので、suds
を使用してください。
APIの呼び出しは次のようになります。
import logging, time, requests, re, suds_requests
from datetime import timedelta,date,datetime,tzinfo
from requests.auth import HTTPBasicAuth
from suds.client import Client
from suds.wsse import *
from suds import null
from cStringIO import StringIO
from bs4 import BeautifulSoup as Soup
log_stream = StringIO()
logging.basicConfig(stream=log_stream, level=logging.INFO)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
WSDL_URL = 'http://213.166.38.97:8080/SRIManagementWS/services/SRIManagementSOAP?wsdl'
username='username'
password='password'
session = requests.session()
session.auth=(username, password)
def addSecurityHeader(client,username,password):
security=Security()
userNameToken=UsernameToken(username,password)
security.tokens.append(userNameToken)
client.set_options(wsse=security)
addSecurityHeader(client,username,password)
arg1 = "argument_1"
arg2 = "argument_2"
try:
client.service.GetServiceById(arg1, arg2)
except TypeNotFound as e:
print e
logresults = log_stream.getvalue()
私は結果を飾り立てるためにbeautifulsoup
を使用するので、あなたは見返りに、XMLを受信します:
soup = Soup(logresults)
print soup.prettify()
[OK]をAPIの接続部分が覆われているので、どこのデータを保存しますか?また、このデータを繰り返してキーワード検索を実行する場所はどこですか?あなたのデータベースに。私はMySQLdb
をお勧めします。テーブルを設定し、どの列に格納する情報(APIから収集したもの)について考えてください。あなたは(また、別のSQLを経由して、それを行うことができます)あなたのキーワードを設定し、リスト、辞書、テキストファイルまたはハードコードされたキーワードを使用してデータベースから抽出した結果を比較した場合にどうするかを定義する場所
def dbconnect():
try:
db = MySQLdb.connect(
host='localhost',
user='root',
passwd='password',
db='mysuperdb'
)
except Exception as e:
sys.exit("Can't connect to database")
return db
def getSQL():
db = dbconnect()
cursor = db.cursor()
sql = "select * from yoursupertable"
dta = cursor.execute(sql)
results = cursor.fetchall()
return results
def dataResult():
results = getSQL()
for column in results:
id = (column[1])
print dataResult()
だからこれは彼ら一致など:)
ありがとうございました。私はそれがどのように進むのかを知らせます。 – AnnaD
この回答が役に立った場合は、投票/回答として受け入れることを検討してください。 –
- 1. Pythonスクレーパーのアドバイス
- 2. データマイニングの状況
- 3. SASのデータマイニング
- 4. ファイナンスドメインのアイデアでのデータマイニング
- 5. データマイニングとビジネスインテリジェンスのテクノロジ
- 6. Rデータマイニングの構文
- 7. Python - アドバイスが必要です
- 8. オレンジ色のpythonデータマイニング:TypeError:0の無効なシーケンス要素
- 9. SQLサーバーとR、データマイニング
- 10. Pythonのキャッシングに関するアドバイス
- 11. Multi git repo高速データマイニングAPI
- 12. データマイニングRoR-app for dribbble shot
- 13. SSASデータマイニング時系列MODELL SSIS
- 14. データマイニングの町および都市名
- 15. Twitterデータマイニング:分離の度合い
- 16. は、私はデータマイニングものを行う
- 17. データマイニングの販売データを取得する
- 18. データマイニングとデータウェアハウスの主な違い
- 19. Pythonを始めよう...アドバイスが必要
- 20. Matplotlib Basemap Equivalent Python 3 **アドバイス、コードなし**
- 21. Pythonのコードモジュールの品質を向上させるためのアドバイス
- 22. オンザフライでのビデオストリーム分析 - アドバイス?
- 23. バックボーン - シンプルなアプリケーションでのアドバイス
- 24. MVC ActionLinkのアドバイス
- 25. デザインパターンのアドバイス
- 26. レポートのアドバイス
- 27. iTunesインテグレーションのアドバイス
- 28. ページ/スラッグアーキテクチャのアドバイス
- 29. プログラミングオブジェクトのアドバイス
- 30. Nutch APIのアドバイス
オープンAPIがある場合は、Webスクレイピングを調べる前に、そのAPIを使用するようにしてください。また、https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0は私のために働いていません。 –
API制限がお客様のニーズを満たしていますか? 400遺伝子未満で、2048文字にURL入力を制限し、1日に200件のリクエストを処理できますか?あなたが提供したキーワード検索リンクのotehr質問は、あなたが与えた2番目のリンクが壊れています(セッションが期限切れです) –
FYI、動作していないようです。 – Petar