예제 #1
0
def inicializarBuscador(request):
    palabra_clave = ""
    data_ncbi = ""
    data_array = ""
    url_ncbi = ""
    url_array = ""
    if request.method == "POST":
        palabra_clave = request.POST['search']
        palabra_clave = palabra_clave.replace(' ', '%20')
        url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term={}&datetype=edat&retmax=10000000&usehistory=y&retmode=json'.format(
            palabra_clave)
        url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords={}'.format(
            palabra_clave)
        data_ncbi = obtenerJson.apply_async(kwargs={'url': url_ncbi})
        data_array = obtenerJson.apply_async(kwargs={'url': url_array})
        cnt = 0
        while data_array.status == 'PENDING' and cnt < 3:
            time.sleep(0.2)
            cnt += 1
        if data_ncbi.get()['esearchresult']['retmax'] == '0' and cnt == 3:
            return render(request, 'NoResults.html')
        else:
            context = {
                "enlaces_busqueda": [data_ncbi, data_array],
                "busqueda": request.POST['search']
            }
            return render(request, 'loader.html', context)
    else:
        return render(request, 'index.html')
예제 #2
0
	def setUp(self):
		self.c = Client()
		self.buscador = views.Buscador()
		self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term=mela&datetype=edat&retmax=2&usehistory=y&retmode=json'
		self.resultados =[]
		self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords=mela'
		self.data_ncbi=obtenerJson.apply_async(kwargs={'url': self.url_ncbi})
		self.expedientes=self.buscador.obtenerExpedientes(self.data_ncbi)
		self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array})
		self.tratamientoDatos=views.TratamientosDatos(self.expedientes, self.data_array)
예제 #3
0
파일: tests.py 프로젝트: Makova/tfg_ugr
 def test_enviarDatos(self):
     self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi})
     self.buscador.expedientes = self.buscador.obtenerExpedientes(
         self.data_ncbi)
     self.buscador.data_array = self.data_array = obtenerJson.apply_async(
         kwargs={'url': self.url_array})
     request = RequestFactory().get('/buscador/', search='prostata')
     self.assertIsNotNone(self.buscador.enviarDatos(request))
     self.assertIsInstance(
         json.loads(
             self.buscador.enviarDatos(request).content.decode('utf-8')),
         list)
예제 #4
0
파일: views.py 프로젝트: Koltharius/tfg_ugr
 def buscar(self,request):
     if request.method == "POST":
         self.palabra_clave=request.POST['search']
         self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={}&reldate=60&datetype=edat&retmax=10&usehistory=y&retmode=json'.format(self.palabra_clave)
         self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?keywords={}&species="h**o%20sapiens"'.format(self.palabra_clave)
         self.data_ncbi=obtenerJson.apply_async( kwargs={'url': self.url_ncbi})
         self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array})
         ##print (data_array)
         time.sleep(15)
         print obtenerJson.apply_async( kwargs={'url': self.url_ncbi})
         #print AsyncResult(data_ncbi).status()
         return index(request)
     else:
         return index(request)
예제 #5
0
    def buscar(self,request):
        if request.method == "POST":
            self.palabra_clave=request.POST['search']
            self.palabra_clave=self.palabra_clave.replace(' ','%20')
            self.url_ncbi = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gds&term={}&datetype=edat&retmax=40&usehistory=y&retmode=json'.format(self.palabra_clave)
            self.url_array = 'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments?assaycount=5&keywords={}'.format(self.palabra_clave)
            self.data_ncbi=obtenerJson.apply_async(kwargs={'url': self.url_ncbi})
            self.data_array = obtenerJson.apply_async(kwargs={'url': self.url_array})
            self.historial_busqueda.append(self.data_ncbi)
            self.historial_busqueda.append(self.data_array)

            self.expedientes=self.obtenerExpedientes(self.data_ncbi)
            return render(request,'listarBusqueda.html')
        else:
            return render(request,'listarBusqueda.html')
예제 #6
0
파일: tests.py 프로젝트: Makova/tfg_ugr
 def test_obtenerExpedientes(self):
     self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi})
     self.assertIsInstance(self.buscador.obtenerExpedientes(self.data_ncbi),
                           list)
     self.resultados = self.buscador.obtenerExpedientes(self.data_ncbi)
     self.assertIsNotNone(self.resultados)
     self.assertIsInstance(self.resultados.pop(), AsyncResult)
예제 #7
0
 def obtenerExpedientes(self,resultados_busqueda):
     resultados=[]
     while resultados_busqueda.status == 'PENDING':
         time.sleep(2)
     for i in range(len(resultados_busqueda.get()['esearchresult']['idlist'])):
         identificador=resultados_busqueda.get()['esearchresult']['idlist'][i]
         url='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&id={}&retmode=json'.format(identificador)
         resultados.append(obtenerJson.apply_async( kwargs={'url': url}))
     return resultados
예제 #8
0
 def obtenerExpedientes(self, resultados_busqueda):
     for i in range(
             0, int(resultados_busqueda.get()['esearchresult']['count']),
             500):
         url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=gds&query_key=1&WebEnv={}&retstart={}&retmax=500&rettype=json&retmode=json'.format(
             resultados_busqueda.get()['esearchresult']['webenv'], i)
         '''
         response = urlopen(url)
         ncbi_uids = json.loads(response.read().decode('utf-8'))
         '''
         ncbi_uids = obtenerJson.apply_async(kwargs={'url': url})
         self.resultados.append(ncbi_uids)
     return self.resultados
예제 #9
0
def sendFile(request):
    searched_file = json.loads(request.POST['myInput'])
    genome = []
    if searched_file['file']['bd'] == 'ArrayExpress':
        # file=obtenerJson.apply_async(kwargs={'url':'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/{}'.format(searched_file['accession'])})
        muestras = obtenerJson.apply_async(
            kwargs={
                'url':
                'https://www.ebi.ac.uk/arrayexpress/json/v3/experiments/{}/samples/'
                .format(searched_file['accession'])
            })
        archivo = urlopen(searched_file['file']['descarga'] +
                          searched_file['file']['accession'] +
                          '.idf.txt').readlines()
        for i in archivo:
            if i:
                if re.findall(regex_hg,
                              i.decode('utf-8', errors="ignore").lower()):
                    genome.append(
                        re.findall(regex_hg,
                                   i.decode('utf-8',
                                            errors="ignore").lower())[0][0])
                if re.findall(regex_grch,
                              i.decode('utf-8', errors="ignore").lower()):
                    genome.append(
                        re.findall(regex_grch,
                                   i.decode('utf-8',
                                            errors="ignore").lower())[0][0])
                if re.findall(regex_grcm,
                              i.decode('utf-8', errors="ignore").lower()):
                    genome.append(
                        re.findall(regex_grcm,
                                   i.decode('utf-8',
                                            errors="ignore").lower())[0][0])
        if genome:
            genome = set(genome)
        else:
            genome.append("Not Available")
        searched_file['file'].update(
            {'samples': muestras.get()['experiment']['sample']})
        searched_file['file'].update(
            {'n_samples': len(muestras.get()['experiment']['sample'])})
        searched_file['file'].update({'genome': genome})
        context = {"file": searched_file['file']}
        return render(request, 'expedient.html', context)
    else:
        if searched_file['file']:
            if len(searched_file['file']['samples']) > 0:
                archivo = urlopen(
                    'https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=' +
                    searched_file['file']['samples'][0]['accession']
                ).readlines()
                for i in archivo:
                    if i:
                        if re.findall(
                                regex_hg,
                                i.decode('utf-8', errors="ignore").lower()):
                            genome.append(
                                re.findall(
                                    regex_hg,
                                    i.decode('utf-8',
                                             errors="ignore").lower())[0][0])
                        if re.findall(
                                regex_grch,
                                i.decode('utf-8', errors="ignore").lower()):
                            genome.append(
                                re.findall(
                                    regex_grch,
                                    i.decode('utf-8',
                                             errors="ignore").lower())[0][0])
                        if re.findall(
                                regex_grcm,
                                i.decode('utf-8', errors="ignore").lower()):
                            genome.append(
                                re.findall(
                                    regex_grcm,
                                    i.decode('utf-8',
                                             errors="ignore").lower())[0][0])
                if genome:
                    genome = set(genome)
                else:
                    genome.append("Not Available")
            else:
                genome.append("Not Available")
        context = {"file": searched_file['file']}
        searched_file['file'].update({'genome': genome})
        return render(request, 'expedient.html', context)
예제 #10
0
파일: tests.py 프로젝트: Makova/tfg_ugr
 def test_task(self):
     self.data_ncbi = obtenerJson.apply_async(kwargs={'url': self.url_ncbi})
     self.assertIsNotNone(self.data_ncbi)
     self.assertIsInstance(self.data_ncbi, AsyncResult)