Chirurgia endoscopică a hipofizei
"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală. Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale. www.neurohope.ro |
urllib POST {python}
Last Updated: Mar 07 2015 09:02, Started by
dilo00o
, Mar 06 2015 12:50
·
0
#1
Posted 06 March 2015 - 12:50
Salutare tuturor,
Din ciclu sa-mi bag picioru' in restrictii vin cu o problema. Intr-un topic anterior ma laudam cu un program in python care face aliniare de secvente de proteine (local /global) si predictie a structurilor secundare. Partea local functioneaza bine, dar cum orice proiect nu e gata pana nu ai si un pic de conectivitate la 'net e nashpa. Pentru a valida rezultatele obtinute de al meu program, trebuie sa compar rezultatele cu cele obtinute de un algoritm profesionist, gratuit, usor folosibil dintr-un browser. Aici e faimoasa resursa: http://www.ch.embnet...ALIGN_form.html Cum neam de neamul meu n-a prea vrut sa stea si sa tot faca copy paste mi-am propus sa automatizez procesul de validare. Asa ca: PROBLEMA Nu stiu cum sa transmit datele serverului si dupa aceea sa le recuperez, folosind DOAR urllib. Ca descrierea sa fie completa, nu pot folosi librarii externe ( adica orice nu vine in librariile standart python3 e un mare no no ) deci mechanize sau urllib2 sunt excluse. Analizand siteul si ce date trebuie sa-i furnizez le precizez aici: seq1,seq2,open,no,exten,method si matrix . import sys, urllib.parse, urllib.request, urllib from http.client import * url = "http://www.ch.embnet.org/software/LALIGN_form.html" # url = "http://www.ch.embnet.org/cgi-bin/LALIGN_form_parser" data = urllib.parse.urlencode({'action': 'http://www.ch.embnet.org//cgi-bin/LALIGN_form_parser', 'method': 'global', 'matrix': 'blosum80', 'seq1': 'WYFGKLGRKDAERQLLSFGNPRGTFLIRESETTKGAYSLSIRDWDDMKGDHVKHYKIRKLDNGGYYITTRAQFETLQQLVQHYSERAAGLCCRLVVPC', 'seq2': 'WYFGKITRRESERLLLNAENPRGTFLVRESETTKGAYCLSVSDFDNAKGLNVKHYKIRKLDSGGFYITSRTQFNSLQQLVAYYSKHADGLCHRLTTVC', 'open': '-14', 'no': 3, 'exten': '-4', 'submit': 'Run lalign'}) data = data.encode('utf-8') request = urllib.request.Request(url, data, {'User-Agent':'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}) result = urllib.request.urlopen(request) finalurl = result.geturl() print(result.read()) print() print(urllib.request.urlopen(urllib.request.Request('http://www.ch.embnet.org/cgi-bin/LALIGN_form_parser')).read()) # fullUrl = url + '?' + data # data=urllib.request.urlopen(fullUrl) # print(data.read()) Am observat ca siteul face un redirect aici http://www.ch.embnet...IGN_form_parser , dat uitandu-ma la codul sursa al paginii, se vede clar ca seq1 si seq2 nu sunt transmise. Aveti cumva vreo idee de cum sa recuperez rezultatele? (in termeni de webapp sunt planta..se vede cred din codul sursa al scriptului Multumesc anticipat |
#2
Posted 06 March 2015 - 14:50
Pai in primul rand ai grija sa trimit toate headerele corect ca nu degeaba le trimite browserul. Apoi parametrii. De exemplu unde e parametrul "evalue" trimis in cazul tau? sau "comm1", "comm2"...
Apoi aplicatiile astea online in general nu-s facute de studenti pe o bere si o pizza, vezi ca nu cumva sa te verifice la cookies cand faci requestul de post, si daca da, ai nevoie de un GET request initial sa primesti tot ce trebuie, cookies si vezi daca nu cumva sunt si alte campuri hidden puse pentru anti-CSRF. Apoi vezi ca primesti un 304 not modified daca pui headerul "If-Modified-Since", "Thu, 05 Mar 2015 09:10:33 GMT" asa cum o face browserul Eu am facut in java ca nu stiu pytong, Insa de mers merge, e usor de 'pacalit'. Ultima chestie ca sa obtii rezultatele e sa parsezi entity-ul primit si sa cauti divu "sib_body" si de acolo iti tu ce te intereseaza. Attached FilesEdited by potae, 06 March 2015 - 15:01. |
#3
Posted 06 March 2015 - 18:04
Sunt sigur ca ai o inima mare, nu shareuiesti si tu codu sursa java? Sa am o sursa de inspiratie si eu
|
#4
Posted 06 March 2015 - 19:03
100 lei man iti dau codul sursa plus program .exe (no jvm required™) care ruleaza silent si primeste argumente string-urile alea si salveaza output-ul (formatat, nu aiurea, strict ce te intereseaza si in ce format vrei tu™) intr-un txt/baza de date/excel/pdf/word. Exe-ul ti-l invoci tu din pytong si apoi citesti fisierul sau si mai elegant outputul cu popen™. Sau ma rog faci ce vrei cu el. Sorry dar nu pot da chiar pe gratis ca si eu m-am chinuit sa invat sa dau free ar insemna sa imi iau painea de la gura ca eu din asta traiesc meditatii si cunoscut librarii/framework-uri obscure. Gratis te ajut doar cu indicatii.
Edited by potae, 06 March 2015 - 19:14. |
#5
Posted 06 March 2015 - 20:52
Revin cu o ultima intrebare.
POSTul tau arata cam asa? POST /cgi-bin/LALIGN_form_parser HTTP/1.1\r\nHost: www.ch.embnet.org\r\nAccept-Encoding: identity\r\n Content-Length: 326\r\n \r\nmatrix=blosum62&no=3&exten=-4&comm2=unknown&format1=plain_text&open=-14&format2=plain_text&method=global&comm1=unknowm&seq1=WYFGKLGRKDAERQLLSFGNPRGTFLIRESETTKGAYSLSIRDWDDMKGDHVKHYKIRKLDNGGYYITTRAQFETLQQLVQHYSERAAGLCCRLVVPC&seq2=WYFGKITRRESERLLLNAENPRGTFLVRESETTKGAYCLSVSDFDNAKGLNVKHYKIRKLDSGGFYITSRTQFNSLQQLVAYYSKHADGLCHRLTTVC Pentru ca eu primesc acuma alta eroare. "sequence management internal error: non implemented format name <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <link rel="stylesheet" href="/sib_css/sib-20130605.css" type="text/css" media="screen"/> <title>LALIGN results</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Style-Type" content="text/css"/> <meta http-equiv="Content-Script-Type" content="text/javascript"/> </head> <body bgcolor='#ddffdd'> <div id='sib_top'><a name='TOP'></a></div> <div id='sib_container'> <div id='sib_header_small'> <div id='sib_expasy_logo'> <a href='http://www.isb-sib.ch' id='sib_link' title='SIB Swiss Institute of Bioinformatics'></a> <a href='http://www.expasy.org' id='expasy_link' title='ExPASy - SIB Bioinformatics Resource Portal'></a> </div> <div class='sib_title_no_logo'> <h1>LALIGN</h1> </div> <div id='sib_header_nav'> <a href='/' title='Home page'>Home</a> | <a href='/contact.html' title='Contact'>Contact</a> </div> </div> <!-- END OF HEADER --> <div id='sib_body'>Sequence Management internal Error: non-implemented format nameMa gandesc ca eroarea vine de la parametrii "format1" si "format2" carora le atribui 'plain_text' ( optiunile de altfel valabila) Edited by dilo00o, 06 March 2015 - 20:53. |
#6
Posted 06 March 2015 - 21:19
Asa arata
Quote
POST http://www.ch.embnet...IGN_form_parser HTTP/1.1 Payload-ul: Quote
method=global&no=3&evalue=10.0&matrix=blosum80&open=-14&exten=-4&comm1=&format1=plain_text&seq1=WYFGKLGRKDAERQLLSFGNPRGTFLIRESETTKGAYSLSIRDWDDMKGDHVKHYKIRKLDNGGYYITTRAQFETLQQLVQHYSERAAGLCCRLVVPC&comm2=&format2=plain_text&seq2=WYFGKITRRESERLLLNAENPRGTFLVRESETTKGAYCLSVSDFDNAKGLNVKHYKIRKLDSGGFYITSRTQFNSLQQLVAYYSKHADGLCHRLTTVC Headerele de request: Quote
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate, lzma Accept-Language: en-US,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Host: www.ch.embnet.org Origin: http://www.ch.embnet.org Referer: http://www.ch.embnet...ALIGN_form.html |
#7
Posted 07 March 2015 - 00:21
FML, am pierdut toată seara cu prostia asta.
Quote Apoi aplicatiile astea online in general nu-s facute de studenti pe o bere si o pizza, vezi ca nu cumva sa te verifice la cookies cand faci requestul de post, si daca da, ai nevoie de un GET request initial sa primesti tot ce trebuie, cookies si vezi daca nu cumva sunt si alte campuri hidden puse pentru anti-CSRF. Ăla care a făcut aplicația nu are habar că un dict (mapping) nu este niciodată ordonat. El în loc să acceseze datele din POST după cheie le accesează după index. Asta e eroare de programator începător. Rezolvarea pentru Python - OrderedDict cu ordinea exactă din form. from urllib import parse from urllib import request from collections import OrderedDict url = "http://www.ch.embnet.org/cgi-bin/LALIGN_form_parser" # ordinea introducerii este importanta data = OrderedDict() data['method'] = 'global' data['no'] = '3' data['evalue'] = '10.0' data['matrix'] = 'blosum80' data['open'] = '-14' data['exten'] = '-4' data['comm1'] = '' data['format1'] = 'plain_text' data['seq1'] = 'WYFGKLGRKDAERQLLSFGNPRGTFLIRESETTKGAYSLSIRDWDDMKGDHVKHYKIRKLDNGGYYITTRAQFETLQQLVQHYSERAAGLCCRLVVPC' data['comm2'] = '' data['format2'] = 'plain_text' data['seq2'] = 'WYFGKITRRESERLLLNAENPRGTFLVRESETTKGAYCLSVSDFDNAKGLNVKHYKIRKLDSGGFYITSRTQFNSLQQLVAYYSKHADGLCHRLTTVC' req = request.Request(url) req.data = parse.urlencode(data).encode('utf-8') ret = request.urlopen(req) res = ret.read().decode('utf-8') print(res) Eu nu vreau 100 de lei, îmi place câte o provocare de genul ăsta. Acu să ne zică @potae câte sute de linii are codul lui Edited by georgica, 07 March 2015 - 00:36. |
#8
Posted 07 March 2015 - 01:10
74, de parca e relevant numarul de linii... Conteaza daca si castigi ceva. Iar in cazul asta nu am castigat nici tu nici eu.
La mine ca n-a fost sa fie la tine de Cred ca programarea e meseria cu cei mai multi suckeri. N-am vazut in contabilitate sau avocatura oameni sa piarda timpu' muncind benevol sa rezolve problemele altora... |
#9
Posted 07 March 2015 - 06:26
Mersi că m-ai jignit de două ori într-un singur post. Poate te ajută să dormi mai bine după ce ți-am stricat planurile de îmbogățire.
În caz că nu știai, lumea mai face și acte caritabile, nu sînt toți puși pe căpătuială. Dacă gândești așa, nu știu ce cauți pe un forum unde lumea vine să fie ajutată. Sau te învârți pe aici la mica ciupeală, poate mai pică un biștar acolo? |
#10
Posted 07 March 2015 - 09:02
@georgica,
Multumesc pentru idee, am schimbat in codul meu dictionarul cu OrderedDict si merge si la mine, ce-i drept e putin mai lung (47 de linii). Aia a fost buba. |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users