Skip to content

Commit

Permalink
IMP: migrate types/formats/transformers from types-genomics (#309)
Browse files Browse the repository at this point in the history
  • Loading branch information
Oddant1 authored Feb 14, 2024
1 parent 1827eab commit dfd1851
Show file tree
Hide file tree
Showing 192 changed files with 10,979 additions and 14 deletions.
3 changes: 2 additions & 1 deletion ci/recipe/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ requirements:
- ijson
- h5py
- qiime2 {{ qiime2_epoch }}.*
- samtools

test:
commands:
- py.test --pyargs q2_types

requires:
- pytest
- qiime2 >={{ qiime2 }}
Expand Down
25 changes: 25 additions & 0 deletions q2_types/feature_data_mag/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# ----------------------------------------------------------------------------
# Copyright (c) 2023, QIIME 2 development team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------

import importlib

from ._format import (
MAGSequencesDirFmt,
OrthologAnnotationDirFmt,
OrthologFileFmt
)

from ._type import MAG, NOG, OG, KEGG
from ._transformer import MAGIterator

__all__ = [
'MAG', 'MAGSequencesDirFmt', 'MAGIterator', 'NOG', 'OG', 'KEGG',
'OrthologAnnotationDirFmt', 'OrthologFileFmt',
]

importlib.import_module('q2_types.feature_data._transformer')
78 changes: 78 additions & 0 deletions q2_types/feature_data_mag/_format.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# ----------------------------------------------------------------------------
# Copyright (c) 2023, QIIME 2 development team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------

import re

from q2_types.feature_data import DNAFASTAFormat
from q2_types.genome_data._format import OrthologFileFmt
from qiime2.plugin import model

from ..plugin_setup import plugin


class MAGSequencesDirFmt(model.DirectoryFormat):
pathspec = (
r"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-"
r"[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}\.(fa|fasta)$"
)

sequences = model.FileCollection(pathspec, format=DNAFASTAFormat)

@sequences.set_path_maker
def sequences_path_maker(self, mag_id):
return r'%s.fasta' % mag_id

def feature_dict(self, relative=False):
'''
Returns a mapping of mag id to filepath for each mag.
Parameters
---------
relative : bool
Whether to return filepaths relative to the directory's location.
Returns absolute filepaths by default.
Returns
-------
dict
Mapping of feature id -> filepath as described above. Sorted
alphabetically by key.
'''
pattern = re.compile(self.pathspec)
ids = {}
for path in self.path.iterdir():
if not pattern.match(path.name):
continue

id = path.stem
absolute_path = path.absolute()
if relative:
ids[id] = str(
absolute_path.relative_to(self.path.absolute())
)
else:
ids[id] = str(absolute_path)

return dict(sorted(ids.items()))


plugin.register_formats(MAGSequencesDirFmt)


class OrthologAnnotationDirFmt(model.DirectoryFormat):
annotations = model.FileCollection(
r'.+\.annotations',
format=OrthologFileFmt
)

@annotations.set_path_maker
def annotations_path_maker(self, file_name):
return file_name.split(sep="_")[0]


plugin.register_formats(OrthologAnnotationDirFmt)
91 changes: 91 additions & 0 deletions q2_types/feature_data_mag/_transformer.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# ----------------------------------------------------------------------------
# Copyright (c) 2023, QIIME 2 development team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------

import collections.abc
import glob
import os.path
from itertools import repeat

import pandas as pd
import skbio
from q2_types.feature_data._transformer import _fastaformats_to_series

from . import MAGSequencesDirFmt
from ..plugin_setup import plugin

CONSTRUCTORS = {
'DNA': skbio.DNA,
'RNA': skbio.RNA,
'protein': skbio.Protein
}


def _get_filename(full_path):
return os.path.splitext(os.path.basename(full_path))[0]


def _series_to_fasta(series, ff, seq_type='DNA'):
fp = os.path.join(str(ff), f'{series.name}.fasta')
with open(fp, 'w') as fh:
for id_, seq in series.iteritems():
if seq:
sequence = CONSTRUCTORS[seq_type](seq, metadata={'id': id_})
skbio.io.write(sequence, format='fasta', into=fh)


def _fastafiles_to_dataframe(ff):
data = {}
for fp in sorted(glob.glob(os.path.join(str(ff), '*.fa*'))):
fname = _get_filename(fp)
data[fname] = _fastaformats_to_series(fp, constructor=skbio.DNA)
df = pd.DataFrame.from_dict(data, orient='index')
df.index.name = 'Feature ID'
df = df.astype(str).replace({'nan': None})
return df


@plugin.register_transformer
def _2(ff: MAGSequencesDirFmt) -> pd.DataFrame:
return _fastafiles_to_dataframe(ff)


@plugin.register_transformer
def _3(df: pd.DataFrame) -> MAGSequencesDirFmt:
result = MAGSequencesDirFmt()
df.apply(_series_to_fasta, axis=1, ff=result, seq_type='DNA')
return result


class MAGIterator(collections.abc.Iterable):
def __init__(self, generator):
self.generator = generator

def __iter__(self):
yield from self.generator


@plugin.register_transformer
def _4(ff: MAGSequencesDirFmt) -> MAGIterator:
def _multi_generator(files):
for fp in files:
fname = _get_filename(fp)
fg = skbio.read(fp, format='fasta', constructor=skbio.DNA)
yield from zip(repeat(fname), fg)

fps = sorted(glob.glob(os.path.join(str(ff), '*.fa*')))
return MAGIterator(_multi_generator(fps))


@plugin.register_transformer
def _5(data: MAGIterator) -> MAGSequencesDirFmt:
result = MAGSequencesDirFmt()
for fn, seq in data:
fp = os.path.join(str(result), f'{fn}.fasta')
with open(fp, 'a') as fin:
skbio.io.write(seq, format='fasta', into=fin)
return result
48 changes: 48 additions & 0 deletions q2_types/feature_data_mag/_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# ----------------------------------------------------------------------------
# Copyright (c) 2023, QIIME 2 development team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------

from q2_types.feature_data import FeatureData

from q2_types.feature_data_mag._format import (
MAGSequencesDirFmt, OrthologAnnotationDirFmt
)
from qiime2.core.type import SemanticType

from ..plugin_setup import plugin


MAG = SemanticType('MAG', variant_of=FeatureData.field['type'])

plugin.register_semantic_types(MAG)
plugin.register_semantic_type_to_format(
FeatureData[MAG],
artifact_format=MAGSequencesDirFmt
)

NOG = SemanticType('NOG', variant_of=FeatureData.field['type'])

plugin.register_semantic_types(NOG)
plugin.register_artifact_class(
FeatureData[NOG],
directory_format=OrthologAnnotationDirFmt)


OG = SemanticType('OG', variant_of=FeatureData.field['type'])

plugin.register_semantic_types(OG)
plugin.register_artifact_class(
FeatureData[OG],
directory_format=OrthologAnnotationDirFmt)


KEGG = SemanticType('KEGG', variant_of=FeatureData.field['type'])

plugin.register_semantic_types(KEGG)
plugin.register_artifact_class(
FeatureData[KEGG],
directory_format=OrthologAnnotationDirFmt)
7 changes: 7 additions & 0 deletions q2_types/feature_data_mag/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# ----------------------------------------------------------------------------
# Copyright (c) 2023, QIIME 2 development team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file LICENSE, distributed with this software.
# ----------------------------------------------------------------------------
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1000565.METUNv1_03812 1000565.METUNv1_03812 4.71e-264 714.0 COG0012@1|root,COG0012@2|Bacteria,1MVM4@1224|Proteobacteria,2VJ1W@28216|Betaproteobacteria,2KUD2@206389|Rhodocyclales 206389|Rhodocyclales J ATPase that binds to both the 70S ribosome and the 50S ribosomal subunit in a nucleotide-independent manner ychF - - ko:K06942 - - - - ko00000,ko03009 - - - MMR_HSR1,YchF-GTPase_C
362663.ECP_0061 362663.ECP_0061 0.0 1624.0 COG0417@1|root,COG0417@2|Bacteria,1MVY9@1224|Proteobacteria,1RMQ1@1236|Gammaproteobacteria,3XPER@561|Escherichia 1236|Gammaproteobacteria L DNA polymerase polB GO:0003674,GO:0003824,GO:0003887,GO:0004518,GO:0004527,GO:0004529,GO:0004536,GO:0006139,GO:0006259,GO:0006260,GO:0006261,GO:0006281,GO:0006725,GO:0006807,GO:0006950,GO:0006974,GO:0007154,GO:0008150,GO:0008152,GO:0008296,GO:0008408,GO:0009058,GO:0009059,GO:0009432,GO:0009605,GO:0009987,GO:0009991,GO:0016740,GO:0016772,GO:0016779,GO:0016787,GO:0016788,GO:0016796,GO:0016895,GO:0018130,GO:0019438,GO:0031668,GO:0033554,GO:0034061,GO:0034641,GO:0034645,GO:0034654,GO:0043170,GO:0044237,GO:0044238,GO:0044249,GO:0044260,GO:0044271,GO:0045004,GO:0045005,GO:0046483,GO:0050896,GO:0051716,GO:0071496,GO:0071704,GO:0071897,GO:0090304,GO:0090305,GO:0140097,GO:1901360,GO:1901362,GO:1901576 2.7.7.7 ko:K02336 - - - - ko00000,ko01000,ko03400 - - - DNA_pol_B,DNA_pol_B_exo1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>k129_5480
TTATTTTCAAGATAATGAGCCAATTTAAGCGGTGTCTGGCCGCCAAGCTGCACGATCACA
CCTTTAA
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>k129_5112
CCCCGGAAAGGGCTGGCGACCGACGATGACCTCGGGAAGCCCCAACTCGCGGCCGATGGC
GCGTACCTCGTC
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
>k129_6525
AAACTCTATCAAGCGTATACCAAAGTGAGTGGTGTATTGATCAGTCAGCTCATTATTGAA
TCGGA
>k129_6531
TCGGATTTGCCGAATGCTTTTTGTAAGGGCCTTCAATTGATTTGGCGATAGCGAGCCCGT
ATTTACGGT
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
>k129_5401
CCATTGTATGTCTTTAGGTAGCTCCTCATGTTTGAGGTTCATGTCTTGGATTTTGTTTTC
TCCAAAAATC
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
>k129_4684
TGATACCGACGCGGCACTTGAGTGCGCGCTATCCTTCAAGGAAGCCACATGCGTTATTGT
TAAACA
>k129_5618
GTGCTAATCGCACCCTCATGAGCGACACCATTATTCTTTATTTTTGAGTCTTCAGCAAAA
>k129_5631
TCATGATGATCCAAAAGCAGTTGCGGAAGCATCTGGGATAATTACGCGGAGTGGATGTCG
CCG
>k129_2817
GTCGCCAATTAGCAACTATGATGTCTTCTGGAGTACCTTTGGTCCAATCATTTGAAATCA
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1000565.METUNv1_03812 1000565.METUNv1_03812 4.71e-264 714.0 COG0012@1|root,COG0012@2|Bacteria,1MVM4@1224|Proteobacteria,2VJ1W@28216|Betaproteobacteria,2KUD2@206389|Rhodocyclales 206389|Rhodocyclales J ATPase that binds to both the 70S ribosome and the 50S ribosomal subunit in a nucleotide-independent manner ychF - - ko:K06942 - - - - ko00000,ko03009 - - - MMR_HSR1,YchF-GTPase_C
362663.ECP_0061 362663.ECP_0061 0.0 1624.0 COG0417@1|root,COG0417@2|Bacteria,1MVY9@1224|Proteobacteria,1RMQ1@1236|Gammaproteobacteria,3XPER@561|Escherichia 1236|Gammaproteobacteria L DNA polymerase polB GO:0003674,GO:0003824,GO:0003887,GO:0004518,GO:0004527,GO:0004529,GO:0004536,GO:0006139,GO:0006259,GO:0006260,GO:0006261,GO:0006281,GO:0006725,GO:0006807,GO:0006950,GO:0006974,GO:0007154,GO:0008150,GO:0008152,GO:0008296,GO:0008408,GO:0009058,GO:0009059,GO:0009432,GO:0009605,GO:0009987,GO:0009991,GO:0016740,GO:0016772,GO:0016779,GO:0016787,GO:0016788,GO:0016796,GO:0016895,GO:0018130,GO:0019438,GO:0031668,GO:0033554,GO:0034061,GO:0034641,GO:0034645,GO:0034654,GO:0043170,GO:0044237,GO:0044238,GO:0044249,GO:0044260,GO:0044271,GO:0045004,GO:0045005,GO:0046483,GO:0050896,GO:0051716,GO:0071496,GO:0071704,GO:0071897,GO:0090304,GO:0090305,GO:0140097,GO:1901360,GO:1901362,GO:1901576 2.7.7.7 ko:K02336 - - - - ko00000,ko01000,ko03400 - - - DNA_pol_B,DNA_pol_B_exo1
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
1000565.METUNv1_03812 1000565.METUNv1_03812,1121035.AUCH01000015_gene2548,1123367.C666_07595,1123487.KB892857_gene2312,1304883.KI912532_gene1239,1348657.M622_06940,159087.Daro_3733,305700.B447_07764,497321.C664_16088,62928.azo0752,640081.Dsui_1039,748247.AZKH_0690,76114.ebA4139,85643.Tmz1t_3631
362663.ECP_0061 1001530.BACE01000011_gene2341,1001585.MDS_3838,1004785.AMBLS11_15500,1005395.CSV86_15315,1005994.GTGU_01680,1005995.GTPT_1156,1005999.GLGR_2221,1006000.GKAS_03113,1006004.GBAG_3457,1027273.GZ77_06950,1027273.GZ77_06975,1028307.EAE_11080,1038922.PflQ2_3424,1042209.HK44_015680,1042375.AFPL01000045_gene1053,1042375.AFPL01000051_gene192,1042377.AFPJ01000007_gene1879,1042876.PPS_1981,1045856.EcWSU1_00673,104623.Ser39006_03906,1046714.AMRX01000001_gene1551,1051646.VITU9109_20279,1056512.D515_04005,1073999.BN137_3094,1076550.LH22_19005,1080067.BAZH01000004_gene4111,1082705.JIBP01000020_gene1660,1085623.GNIT_0082,1109445.AGSX01000022_gene1619,1109445.AGSX01000023_gene1794,1111728.ATYS01000002_gene2032,1112217.PPL19_23878,1114922.CIFAM_14_00570,1114970.PSF113_3842,1115512.EH105704_02_03110,1115515.EV102420_08_02570,1116375.VEJY3_10210,1117314.PCIT_16365,1117315.AHCA01000002_gene3366,1117318.PRUB_20823,1117319.PSPO_10129,1117647.M5M_09500,1117958.PE143B_0119780,1120953.AUBH01000004_gene3192,1120963.KB894506_gene3814,1120970.AUBZ01000052_gene2919,1121374.KB891591_gene3511,1121878.AUGL01000024_gene3733,1121921.KB898710_gene523,1121935.AQXX01000142_gene2202,1121937.AUHJ01000011_gene2966,1121939.L861_00110,1121943.KB899993_gene35,1122201.AUAZ01000003_gene1977,1122207.MUS1_09280,1122599.AUGR01000012_gene874,1123020.AUIE01000047_gene1779,1123228.AUIH01000013_gene228,1123236.KB899382_gene2208,1123519.PSJM300_10125,1124983.PFLCHA0_c25450,1124991.MU9_896,1127673.GLIP_3806,1128912.GMES_0635,1129794.C427_0719,1134474.O59_003286,1136138.JH604622_gene2217,1136163.M565_ctg1P0716,1137799.GZ78_23460,1141662.OOA_13757,1141663.OOC_06427,1144325.PMI22_02075,1149133.ppKF707_3157,1151116.Q7S_19140,1151127.KB906326_gene533,1163398.AJJP01000153_gene3010,1163398.AJJP01000154_gene2728,1166016.W5S_3969,1166130.H650_19135,1166948.JPZL01000001_gene2228,1179778.PMM47T1_15041,1182590.BN5_03028,1187848.AJYQ01000080_gene1281,1188252.AJYK01000104_gene18,1190603.AJYD01000005_gene4046,1190606.AJYG01000064_gene1318,1191299.AJYX01000010_gene534,1196835.A458_14590,1197719.A464_88,1197719.A464_89,1201293.AKXQ01000005_gene187,1202962.KB907152_gene1129,1205683.CAKR01000014_gene261,1205908.AKXW01000045_gene3571,1206777.B195_15802,1207075.PputUW4_01630,1207076.ALAT01000047_gene3451,1207076.ALAT01000076_gene1696,1208321.D104_17215,1209072.ALBT01000065_gene1128,1211112.ALJC01000025_gene3695,1211579.PP4_34220,1212548.B381_10908,1214065.BAGV01000052_gene1889,1215092.PA6_033_00130,1215114.BBIU01000009_gene1489,1216007.AOPM01000111_gene322,1216966.BAUC01000023_gene1579,1218086.BBNB01000010_gene760,1218352.B597_008110,1219065.VPR01S_08_00960,1219072.VHA01S_049_00040,1219076.N646_1029,1219077.VAZ01S_024_00390,1219080.VEZ01S_14_00060,1221522.B723_22150,1224136.AMFN01000004_gene1724,1224318.DT73_07600,1225184.ALXE01000004_gene139,1225785.CM001983_gene2995,1226994.AMZB01000058_gene5029,1229485.AMYV01000161_gene1756,1232683.ADIMK_2705,1236541.BALL01000005_gene907,1236542.BALM01000018_gene1511,1238450.VIBNISOn1_1710005,1240350.AMZE01000004_gene2404,1245471.PCA10_33960,1248232.BANQ01000035_gene3916,1249634.D781_0685,1265490.JHVY01000003_gene3179,1265503.KB905165_gene1170,1267600.JFGT01000005_gene2743,1268068.PG5_19750,1268237.G114_12253,1268239.PALB_26410,1278307.KB906974_gene1764,1278309.KB907099_gene2467,1279015.KB908456_gene1623,1280001.BAOA01000128_gene1213,1282356.H045_05955,1283284.AZUK01000001_gene515,1286170.RORB6_14920,1294143.H681_11200,1298593.TOL_2986,1298865.H978DRAFT_0156,1301098.PKB_1141,1307437.J139_01197,1316927.ATKI01000146_gene923,1328313.DS2_18293,1333507.AUTQ01000175_gene1502,1333856.L686_02350,1336233.JAEH01000026_gene973,1336237.JAEE01000001_gene1943,1344012.ATMI01000002_gene1472,1348114.OM33_12680,1348635.BBJY01000017_gene4157,1357272.AVEO02000138_gene691,1357275.AVEL02000076_gene2015,1357279.N018_15585,1388763.O165_013170,1390370.O203_23445,1395516.PMO01_16945,1395571.TMS3_0100805,1397284.AYMN01000025_gene4216,1399774.JDWH01000001_gene2409,1410619.SRDD_35890,1415630.U771_10760,1419583.V466_14160,1437882.AZRU01000027_gene839,1437882.AZRU01000027_gene840,1439940.BAY1663_04623,1440052.EAKF1_ch1361,1441629.PCH70_24170,1441930.Z042_17410,1443113.LC20_04540,1443113.LC20_04541,1448139.AI20_07565,1453496.AT03_18325,1453501.JELR01000001_gene2440,1453503.AU05_13350,1454202.PPBDW_130199___1,1469245.JFBG01000054_gene2118,1470593.BW43_03461,1484157.PSNIH2_14570,1484158.PSNIH1_08275,1488328.JMCL01000179_gene3609,1492922.GY26_06990,1499686.BN1079_00467,1500890.JQNL01000001_gene2109,1500893.JQNB01000001_gene1060,1515746.HR45_05935,1517681.HW45_07820,1523503.JPMY01000010_gene2641,1524467.IV04_00325,1535422.ND16A_0750,1537994.JQFW01000056_gene934,155864.EDL933_0062,1565129.JSFF01000001_gene1169,156578.ATW7_09016,156578.ATW7_09021,157783.LK03_16860,1577887.JSYG01000001_gene667,158822.LH89_15865,160488.PP_2393,198214.SF0055,198628.Dda3937_01373,199310.c0071,203122.Sde_1511,205918.Psyr_2361,205922.Pfl01_3734,207954.MED92_02394,211586.SO_1820,214092.YPO0518,216142.LT40_12375,216595.PFLU_2067,218491.ECA3852,218493.SBG_0085,220341.16501382,220664.PFL_2480,223283.PSPTO_2621,223926.28806938,225849.swp_3211,234831.PSM_A2035,237609.PSAKL28_32080,243277.VC_1212,247633.GP2143_14671,247634.GPB2148_2486,264730.PSPPH_2495,273526.SMDB11_0043,28152.DJ57_2731,28229.ND2E_3600,28258.KP05_04835,283699.D172_3177,287.DR97_5961,29486.NJ56_03155,29495.EA26_06645,298386.PBPRA1531,301.JNHE01000034_gene4200,305900.GV64_17865,312309.VF_1628,314275.MADE_1016665,314282.PCNPT3_06855,314292.VAS14_03703,316275.VSAL_I2142,316407.85674307,318161.Sden_2428,318167.Sfri_2629,319224.Sputcn32_1514,32042.PstZobell_08221,321846.PS417_09565,323850.Shew_2482,326297.Sama_1250,326442.PSHAa1990,342610.Patl_3630,345073.VC395_1331,349521.HCH_01557,349965.yinte0001_42170,349965.yinte0001_42180,349966.DJ58_1292,351746.Pput_3302,35703.DQ02_16995,357804.Ping_1857,362663.ECP_0061,371042.NG99_21800,379731.PST_2786,380703.AHA_2107,382245.ASA_2190,384676.PSEEN3365,390235.PputW619_1903,392500.Swoo_3085,393305.YE0637,398579.Spea_2655,399739.Pmen_3572,399741.Spro_0731,399742.Ent638_0607,400668.Mmwyl1_2210,406817.XNC1_4058,406818.XBJ1_1795,425104.Ssed_1567,42565.FP66_08165,440512.C211_04698,458817.Shal_2729,465817.ETA_07310,469008.B21_00061,469595.CSAG_03356,471874.PROSTU_01143,471881.PROPEN_00979,471881.PROPEN_00980,471881.PROPEN_00981,477228.YO5_10215,481805.EcolC_3597,491952.Mar181_1745,493475.GARC_4665,498211.CJA_2886,500637.PROVRUST_06038,500640.CIT292_09418,502347.ESCAB7627_3201,511062.GU3_08445,511145.b0060,517433.PanABDRAFT_1681,520999.PROVALCAL_02276,521000.PROVRETT_06774,527002.yaldo0001_28460,529507.PMI2327,549.BW31_03194,550540.Fbal_1160,55207.KP22_11025,553385.JEMF01000001_gene570,55601.VANGNB10_cI1556,558884.JRGM01000153_gene949,561229.Dd1591_0570,561230.PC1_3628,561231.Pecwa_3819,568768.CM001975_gene3021,571.MC52_12495,573.JG24_29705,575788.VS_1957,579405.Dd703_0609,585.DR95_2445,587753.EY04_11270,589873.EP13_15875,590409.Dd586_3566,592316.Pat9b_0640,593105.S7A_15715,595494.Tola_2147,598467.BrE312_0653,61647.LG71_24775,617140.AJZE01000124_gene2547,629265.PMA4326_20105,630626.EBL_c32930,633.DJ40_1710,634499.EpC_07180,634500.EbC_06980,637905.SVI_2972,637910.ROD_00651,640513.Entas_0660,642227.HA49_19235,644801.Psest_1519,658612.MD26_00790,66269.NL54_08390,665029.EAMY_2919,667121.ET1_10_00490,672.VV93_v1c11490,674977.VMC_25520,674977.VMC_25530,675806.VII_002578,675812.VHA_002685,675813.VIB_001445,675814.VIC_004442,675815.VOA_000407,675816.VIA_002663,675817.VDA_002186,690597.JH730923_gene1694,690597.JH730923_gene1695,69328.PVLB_14735,693444.D782_3810,701176.VIBRN418_07876,701347.Entcl_3665,706191.PANA_0690,712898.Pvag_0098,715451.ambt_00830,716541.ECL_00856,717774.Marme_2143,722419.PH505_ad00150,741091.Rahaq_3758,743720.Psefu_4133,745277.GRAQ_02860,745411.B3C1_16722,754331.AEME01000001_gene2079,754436.JCM19237_4567,754436.JCM19237_4568,754436.JCM19237_4569,76869.PputGB1_1999,78398.KS43_07875,796620.VIBC2010_15254,82995.CR62_04670,82996.sch_03475,870967.VIS19158_15604,87626.PTD2_10919,891974.E05_44490,891974.E05_44500,891974.E05_44510,90371.CY43_00480,910964.GEAM_0249,911008.GLAD_03089,911239.CF149_11719,930166.CD58_19980,932213.SPM24T3_00530,932677.PAJ_0037,94122.Shewana3_2629,945543.VIBR0546_10799,945550.VISI1226_06239,95619.PM1_0216955,983545.Glaag_3623,998088.B565_1731,998674.ATTE01000001_gene309
Loading

0 comments on commit dfd1851

Please sign in to comment.