@@ -1519,19 +1519,15 @@ def addlink(x):
1519
1519
baseurl = "http://eggnog5.embl.de/"
1520
1520
elif x .startswith ("ENOG41" ):
1521
1521
baseurl = "http://eggnog45.embl.de/"
1522
- x = '<a target="_blank" href="{}#/app/results?target_nogs={}>{}</a>' . format (
1523
- baseurl , x , x
1524
- )
1522
+ else :
1523
+ return "None found"
1524
+ x = f'<a target="_blank" href=" { baseurl } #/app/results?target_nogs= { x } "> { x } </a>'
1525
1525
return x
1526
1526
1527
1527
def addlink2 (x ):
1528
- x = (
1529
- '<a target="_blank" href="http://www.orthodb.org/?level=&species=&query='
1530
- + x
1531
- + '">'
1532
- + x
1533
- + "</a>"
1534
- )
1528
+ if x == "None" :
1529
+ return "None found"
1530
+ x = f'<a target="_blank" href="http://www.orthodb.org/?level=&species=&query={ x } ">{ x } </a>'
1535
1531
return x
1536
1532
1537
1533
# building remaining HTML output
@@ -1540,35 +1536,39 @@ def addlink2(x):
1540
1536
df = pd .read_csv (orthologs , sep = "\t " , header = None )
1541
1537
orthtable = []
1542
1538
for row in df .itertuples ():
1539
+ # eggnog results for table
1543
1540
if isinstance (row [3 ], str ):
1544
- if ", " in row [3 ]:
1545
- t = row [ 3 ]. split ( ", " ) # convert Eggnog to list
1541
+ if row [3 ] == "None" :
1542
+ value = "None found"
1546
1543
else :
1547
- t = [row [3 ]]
1548
- else :
1549
- t = ["None" ]
1550
- if t [0 ] == "None" :
1551
- t = ["None" ]
1544
+ if ", " in row [3 ]:
1545
+ t = row [3 ].split (", " ) # convert Eggnog to list
1546
+ else :
1547
+ t = [row [3 ]]
1548
+ t = [addlink (y ) for y in t ]
1549
+ t = [x for x in t if x not in ["None" , None , "" ]]
1550
+ if len (t ) > 0 :
1551
+ value = "; " .join (t )
1552
+ else :
1553
+ value = "None found"
1552
1554
else :
1553
- t = [addlink (y ) for y in t ]
1554
- try :
1555
- value = "; " .join (t )
1556
- except TypeError :
1557
1555
value = "None found"
1556
+ # busco results for table
1558
1557
if isinstance (row [4 ], str ):
1559
- if ", " in row [4 ]:
1560
- r = row [ 4 ]. split ( ", " ) # convert BUSCO to list
1558
+ if row [4 ] == "None" :
1559
+ value2 = "None found"
1561
1560
else :
1562
- r = [row [4 ]]
1563
- else :
1564
- r = ["None" ]
1565
- if r [0 ] == "None" :
1566
- r = ["None" ]
1561
+ if ", " in row [4 ]:
1562
+ r = row [4 ].split (", " ) # convert BUSCO to list
1563
+ else :
1564
+ r = [row [4 ]]
1565
+ r = [x for x in r if x not in ["None" , None , "" ]]
1566
+ r = [addlink2 (y ) for y in r ]
1567
+ if len (r ) > 0 :
1568
+ value2 = "; " .join (r )
1569
+ else :
1570
+ value2 = "None found"
1567
1571
else :
1568
- r = [addlink2 (y ) for y in r ]
1569
- try :
1570
- value2 = "; " .join (r )
1571
- except TypeError :
1572
1572
value2 = "None found"
1573
1573
final = [row [0 ], row [1 ], row [2 ], value , value2 , row [5 ]]
1574
1574
orthtable .append (final )
@@ -1586,11 +1586,10 @@ def addlink2(x):
1586
1586
pd .set_option ("display.max_colwidth" , None )
1587
1587
except ValueError :
1588
1588
pd .set_option ("display.max_colwidth" , 0 )
1589
+ html_table = df2html (df2 )
1589
1590
output .write (lib .HEADER )
1590
1591
output .write (lib .ORTHOLOGS )
1591
- output .write (
1592
- df2 .to_html (index = False , escape = False , classes = "table table-hover" )
1593
- )
1592
+ output .write (html_table )
1594
1593
output .write (lib .FOOTER )
1595
1594
1596
1595
else :
@@ -1643,5 +1642,21 @@ def addlink2(x):
1643
1642
lib .log .info ("Funannotate compare completed successfully!" )
1644
1643
1645
1644
1645
+ def df2html (df ):
1646
+ # for some effing reason pandas isn't doing this properly
1647
+ html = '<table id="table" class="table table-bordered table-responsive m-3" style="width:80%; !important;font-sze:10pt;">'
1648
+ html += '<thead class="table-dark"><tr>'
1649
+ for x in df .columns .values .tolist ():
1650
+ html += f"<th>{ x } </th>"
1651
+ html += "</tr></thead><tbody>"
1652
+ for row in df .itertuples (index = False ):
1653
+ html += "<tr>"
1654
+ for i in range (len (row )):
1655
+ html += f"<td>{ row [i ]} </td>"
1656
+ html += "</tr>"
1657
+ html += "</tbody></table>"
1658
+ return html
1659
+
1660
+
1646
1661
if __name__ == "__main__" :
1647
1662
main (sys .argv [1 :])
0 commit comments