示例#1
0
 def testSpacesMustBePreserved(self):
     """
     If there are spaces in the query title or subject titles, the spaces
     must be preserved.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORD_WITH_SPACES)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94 = list(reader.records())
         self.assertEqual('ACC 94', acc94[0]['query'])
         self.assertEqual('IN SV', acc94[0]['alignments'][0]['title'])
示例#2
0
 def testSaveAsJSON(self):
     """
     A DiamondTabularFormatReader must be able to save itself as JSON.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         fp = StringIO()
         reader.saveAsJSON(fp)
         self.maxDiff = None
         self.assertEqual(DIAMOND_RECORDS_DUMPED, fp.getvalue())
示例#3
0
 def testSpacesMustBePreserved(self):
     """
     If there are spaces in the query title or subject titles, the spaces
     must be preserved.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORD_WITH_SPACES_IN_TITLES)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94 = list(reader.records())
         self.assertEqual('ACC 94', acc94[0]['query'])
         self.assertEqual('IN SV', acc94[0]['alignments'][0]['title'])
示例#4
0
 def testDiamondInput(self):
     """
     Test conversion of a chunk of DIAMOND output.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94, akav, bhav = list(reader.records())
         self.assertEqual(5, len(acc94['alignments']))
         self.assertEqual(2, len(akav['alignments']))
         self.assertEqual(2, len(bhav['alignments']))
示例#5
0
 def testSaveAsJSON(self):
     """
     A DiamondTabularFormatReader must be able to save itself as JSON.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         fp = StringIO()
         reader.saveAsJSON(fp)
         self.maxDiff = None
         self.assertEqual(DIAMOND_RECORDS_DUMPED, fp.getvalue())
示例#6
0
 def testDiamondInput(self):
     """
     Test conversion of a chunk of DIAMOND output.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94, akav, bhav = list(reader.records())
         self.assertEqual(5, len(acc94['alignments']))
         self.assertEqual(2, len(akav['alignments']))
         self.assertEqual(2, len(bhav['alignments']))
示例#7
0
 def testSaveAsJSONBzip2(self):
     """
     A DiamondTabularFormatReader must be able to save itself as bzip2'd
     JSON.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         data = BytesIO()
         fp = bz2file.BZ2File(data, 'w')
         reader.saveAsJSON(fp, writeBytes=True)
         fp.close()
         self.assertEqual(compress(DIAMOND_RECORDS_DUMPED.encode('UTF-8')),
                          data.getvalue())
 def testDiamondInputWithoutNidentOrPositives(self):
     """
     Test conversion of a chunk of DIAMOND output that does not contain the
     nident or positives fields.
     """
     mockOpener = mockOpen(
         read_data=DIAMOND_RECORDS_WITHOUT_NIDENT_AND_POSITIVE)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94, akav, bhav = list(reader.records())
         for record in acc94, akav, bhav:
             for alignment in record['alignments']:
                 for hsp in alignment['hsps']:
                     self.assertIs(None, hsp['identicalCount'])
示例#9
0
 def testDiamondInputWithoutNidentOrPositives(self):
     """
     Test conversion of a chunk of DIAMOND output that does not contain the
     nident or positives fields.
     """
     mockOpener = mockOpen(
         read_data=DIAMOND_RECORDS_WITHOUT_NIDENT_AND_POSITIVE)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         acc94, akav, bhav = list(reader.records())
         for record in acc94, akav, bhav:
             for alignment in record['alignments']:
                 for hsp in alignment['hsps']:
                     self.assertIs(None, hsp['identicalCount'])
示例#10
0
 def testSaveAsJSONBzip2(self):
     """
     A DiamondTabularFormatReader must be able to save itself as bzip2'd
     JSON.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         data = BytesIO()
         fp = bz2file.BZ2File(data, 'w')
         reader.saveAsJSON(fp, writeBytes=True)
         fp.close()
         self.assertEqual(
             compress(DIAMOND_RECORDS_DUMPED.encode('UTF-8')),
             data.getvalue())
示例#11
0
 def testDiamondParams(self):
     """
     When a DIAMOND file has been read, its parameters must be present
     in the reader instance.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         list(reader.records())
         self.assertEqual('DIAMOND', reader.application)
         self.assertEqual(
             {
                 'application': 'DIAMOND',
                 'reference': (
                     'Buchfink et al., Fast and Sensitive Protein '
                     'Alignment using DIAMOND, Nature Methods, 12, '
                     '59-60 (2015)'),
                 'task': 'blastx',
                 'version': 'v0.8.23',
             },
             reader.params)
示例#12
0
 def testDiamondParams(self):
     """
     When a DIAMOND file has been read, its parameters must be present
     in the reader instance.
     """
     mockOpener = mockOpen(read_data=DIAMOND_RECORDS)
     with patch.object(builtins, 'open', mockOpener):
         reader = DiamondTabularFormatReader('file.txt')
         list(reader.records())
         self.assertEqual('DIAMOND', reader.application)
         self.assertEqual(
             {
                 'application':
                 'DIAMOND',
                 'reference':
                 ('Buchfink et al., Fast and Sensitive Protein '
                  'Alignment using DIAMOND, Nature Methods, 12, '
                  '59-60 (2015)'),
                 'task':
                 'blastx',
                 'version':
                 'v0.8.23',
             }, reader.params)
                '--outfmt 6 qtitle stitle bitscore evalue qframe qseq '
                'qstart qend sseq sstart send slen btop'
                'Note that only each line of the output is JSON (the full '
                'output is not valid JSON by itself).')
    )

    parser.add_argument(
        '--json', metavar='JSON-output-file',
        help=('The JSON filename to write the converted DIAMOND file to. If '
              'omitted, standard output will be used.'))

    parser.add_argument(
        '--diamond', metavar='DIAMOND-file', default=sys.stdin,
        help=('The DIAMOND tabular output file to convert. If omitted, '
              'standard input will be read.'))

    parser.add_argument(
        '--bzip2', default=False, action='store_true',
        help='Compress output using bzip2.')

    args = parser.parse_args()

    if args.bzip2:
        fp = bz2file.BZ2File(args.json or sys.stdout, 'w')
    else:
        fp = open(args.json, 'w') if args.json else sys.stdout

    reader = DiamondTabularFormatReader(args.diamond)
    reader.saveAsJSON(fp, writeBytes=args.bzip2)
    fp.close()
                'output is not valid JSON by itself).'))

    parser.add_argument(
        '--json',
        metavar='JSON-output-file',
        help=('The JSON filename to write the converted DIAMOND file to. If '
              'omitted, standard output will be used.'))

    parser.add_argument(
        '--diamond',
        metavar='DIAMOND-file',
        default=sys.stdin,
        help=('The DIAMOND tabular output file to convert. If omitted, '
              'standard input will be read.'))

    parser.add_argument('--bzip2',
                        default=False,
                        action='store_true',
                        help='Compress output using bzip2.')

    args = parser.parse_args()

    if args.bzip2:
        fp = bz2file.BZ2File(args.json or sys.stdout, 'w')
    else:
        fp = open(args.json, 'w') if args.json else sys.stdout

    reader = DiamondTabularFormatReader(args.diamond)
    reader.saveAsJSON(fp, writeBytes=args.bzip2)
    fp.close()