Пример #1
0
    def post(self):
        barcodes = self.get_argument('barcodes').split(',')
        if self.get_argument('blanks'):
            blanks = self.get_argument('blanks').split(',')
        else:
            blanks = []
        if self.get_argument('external'):
            external = self.get_argument('external').split(',')
        else:
            external = []
        # Get metadata and create zip file
        metadata, failures = db.pulldown(barcodes, blanks, external)

        meta_zip = InMemoryZip()
        failed = '\n'.join(['\t'.join(bc) for bc in viewitems(failures)])
        failtext = ("The following barcodes were not retrieved "
                    "for any survey:\n%s" % failed)
        meta_zip.append("failures.txt", failtext)
        for survey, meta in viewitems(metadata):
            meta_zip.append('survey_%s_md.txt' % survey, meta)

        # write out zip file
        self.add_header('Content-type',  'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=metadata.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
Пример #2
0
    def post(self):
        barcodes = self.get_argument('barcodes').split(',')
        if self.get_argument('blanks'):
            blanks = self.get_argument('blanks').split(',')
        else:
            blanks = []
        if self.get_argument('external'):
            external = self.get_argument('external').split(',')
        else:
            external = []
        # Get metadata and create zip file
        metadata, failures = db.pulldown(barcodes, blanks, external)

        meta_zip = InMemoryZip()
        failed = '\n'.join(['\t'.join(bc) for bc in viewitems(failures)])
        failtext = ("The following barcodes were not retrieved "
                    "for any survey:\n%s" % failed)
        meta_zip.append("failures.txt", failtext)
        for survey, meta in viewitems(metadata):
            meta_zip.append('survey_%s_md.txt' % survey, meta)

        # write out zip file
        self.add_header('Content-type', 'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=metadata.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
    def post(self):
        participants = db.participant_names()
        participants = "\n".join(["\t".join(r) for r in participants])

        meta_zip = InMemoryZip()
        meta_zip.append("participants.txt", participants)

        # write out zip file
        self.add_header("Content-type", "application/octet-stream")
        self.add_header("Content-Transfer-Encoding", "binary")
        self.add_header("Accept-Ranges", "bytes")
        self.add_header("Content-Encoding", "none")
        self.add_header("Content-Disposition", "attachment; filename=participants.zip")
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
Пример #4
0
 def post(self):
     kitinfo = loads(self.get_argument('kitinfo'))
     fields = self.get_argument('fields').split(',')
     table = ['\t'.join(fields)]
     table.extend(['\t'.join(map(str, kit)) for kit in kitinfo])
     kit_zip = InMemoryZip()
     kit_zip.append('kit_printouts.txt', get_printout_data(kitinfo)).append(
         'kit_table.txt', '\n'.join(table))
     # write out zip file
     self.add_header('Content-type',  'application/octet-stream')
     self.add_header('Content-Transfer-Encoding', 'binary')
     self.add_header('Accept-Ranges', 'bytes')
     self.add_header('Content-Encoding', 'none')
     self.add_header('Content-Disposition', 'attachment; filename=kitinfo.zip')
     self.write(kit_zip.write_to_buffer())
     self.flush()
     self.finish()
Пример #5
0
    def post(self):
        participants = db.participant_names()
        participants = '\n'.join(['\t'.join(r) for r in participants])

        meta_zip = InMemoryZip()
        meta_zip.append('participants.txt', participants)

        # write out zip file
        self.add_header('Content-type', 'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=participants.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
Пример #6
0
    def post(self):
        participants = db.participant_names()
        participants = '\n'.join(['\t'.join(r) for r in participants])

        meta_zip = InMemoryZip()
        meta_zip.append('participants.txt', participants)

        # write out zip file
        self.add_header('Content-type',  'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=participants.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
Пример #7
0
 def post(self):
     kitinfo = loads(self.get_argument('kitinfo'))
     fields = self.get_argument('fields').split(',')
     table = ['\t'.join(fields)]
     table.extend(['\t'.join(map(str, kit)) for kit in kitinfo])
     kit_zip = InMemoryZip()
     kit_zip.append('kit_printouts.txt', get_printout_data(kitinfo)).append(
         'kit_table.txt', '\n'.join(table))
     # write out zip file
     self.add_header('Content-type', 'application/octet-stream')
     self.add_header('Content-Transfer-Encoding', 'binary')
     self.add_header('Accept-Ranges', 'bytes')
     self.add_header('Content-Encoding', 'none')
     self.add_header('Content-Disposition',
                     'attachment; filename=kitinfo.zip')
     self.write(kit_zip.write_to_buffer())
     self.flush()
     self.finish()
Пример #8
0
    def post(self):
        barcodes = listify(self.get_arguments('barcodes'))
        blanks = listify(self.get_arguments('blanks'))
        # query which surveys have been selected by the user
        selected_ag_surveys = listify(
            self.get_arguments('selected_ag_surveys'))
        external = listify(self.get_arguments('external'))

        selected_ag_surveys = list(map(int, selected_ag_surveys))

        # Get metadata and create zip file
        metadata, failures = db.pulldown(barcodes, blanks, external)

        meta_zip = InMemoryZip()
        failed = '\n'.join(['\t'.join(bc) for bc in viewitems(failures)])
        failtext = ("The following barcodes were not retrieved "
                    "for any survey:\n%s" % failed)
        meta_zip.append("failures.txt", failtext)

        # check database about what surveys are available
        available_agsurveys = {}
        for (_id, name, _) in db.list_ag_surveys():
            available_agsurveys[_id] = name.replace(' ', '_')

        results_as_pd = []
        for survey, meta in viewitems(metadata):
            # only create files for those surveys that have been selected by
            # the user. Note that ids from the DB are negative, in metadata
            # they are positive!
            # Currently, I (Stefan Janssen) don't have test data for external
            # surveys, thus I don't know their 'survey' value. I expect it to
            # be the name of the external survey. In order to not block their
            # pulldown I check that a skipped survey ID must be in the set of
            # all available surveys.
            survey = -1 * survey
            if (survey in selected_ag_surveys) or \
               (survey not in available_agsurveys):
                meta_zip.append(
                    'survey_%s_md.txt' % available_agsurveys[survey], meta)
                # transform each survey into a pandas dataframe for later merge
                # read all columns as string to avoid unintened conversions,
                # like cutting leading zeros of barcodes
                pd_meta = pd.read_csv(StringIO(meta), sep="\t", dtype=str)
                # reset the index to barcodes = here sample_name
                pd_meta.set_index('sample_name', inplace=True)
                results_as_pd.append(pd_meta)

        # add the merged table of all selected surveys to the zip archive
        if self.get_argument('merged', default='False') == 'True':
            pd_all = pd.DataFrame()
            if len(results_as_pd) > 0:
                pd_all = pd.concat(results_as_pd, join='outer', axis=1)
                meta_zip.append(
                    'surveys_merged_md.txt',
                    pd_all.to_csv(sep='\t', index_label='sample_name'))

        # write out zip file
        self.add_header('Content-type', 'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=metadata.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()
Пример #9
0
    def post(self):
        barcodes = listify(self.get_arguments('barcodes'))
        blanks = listify(self.get_arguments('blanks'))
        # query which surveys have been selected by the user
        selected_ag_surveys = listify(
            self.get_arguments('selected_ag_surveys'))
        external = listify(self.get_arguments('external'))

        selected_ag_surveys = list(map(int, selected_ag_surveys))

        # Get metadata and create zip file
        metadata, failures = db.pulldown(barcodes, blanks, external)

        meta_zip = InMemoryZip()
        failed = '\n'.join(['\t'.join(bc) for bc in viewitems(failures)])
        failtext = ("The following barcodes were not retrieved "
                    "for any survey:\n%s" % failed)
        meta_zip.append("failures.txt", failtext)

        # check database about what surveys are available
        available_agsurveys = {}
        for (_id, name, _) in db.list_ag_surveys():
            available_agsurveys[_id] = name.replace(' ', '_')

        results_as_pd = []
        for survey, meta in viewitems(metadata):
            # only create files for those surveys that have been selected by
            # the user. Note that ids from the DB are negative, in metadata
            # they are positive!
            # Currently, I (Stefan Janssen) don't have test data for external
            # surveys, thus I don't know their 'survey' value. I expect it to
            # be the name of the external survey. In order to not block their
            # pulldown I check that a skipped survey ID must be in the set of
            # all available surveys.
            survey = -1 * survey
            if (survey in selected_ag_surveys) or \
               (survey not in available_agsurveys):
                meta_zip.append('survey_%s_md.txt' %
                                available_agsurveys[survey], meta)
                # transform each survey into a pandas dataframe for later merge
                # read all columns as string to avoid unintened conversions,
                # like cutting leading zeros of barcodes
                pd_meta = pd.read_csv(StringIO(meta), sep="\t", dtype=str)
                # reset the index to barcodes = here sample_name
                pd_meta.set_index('sample_name', inplace=True)
                results_as_pd.append(pd_meta)

        # add the merged table of all selected surveys to the zip archive
        if self.get_argument('merged', default='False') == 'True':
            pd_all = pd.DataFrame()
            if len(results_as_pd) > 0:
                pd_all = pd.concat(results_as_pd, join='outer', axis=1)
                meta_zip.append('surveys_merged_md.txt',
                                pd_all.to_csv(sep='\t',
                                              index_label='sample_name'))

        # write out zip file
        self.add_header('Content-type',  'application/octet-stream')
        self.add_header('Content-Transfer-Encoding', 'binary')
        self.add_header('Accept-Ranges', 'bytes')
        self.add_header('Content-Encoding', 'none')
        self.add_header('Content-Disposition',
                        'attachment; filename=metadata.zip')
        self.write(meta_zip.write_to_buffer())
        self.flush()
        self.finish()