コード例 #1
0
ファイル: test_api.py プロジェクト: keshabb/datapane
def gen_report_with_files(datadir: Path,
                          single_file: bool = False) -> dp.Report:
    # Asset tests
    lis = [1, 2, 3]
    df = gen_df(10000)
    md_block = dp.Markdown(
        text="# Test markdown block <hello/> \n Test **content**")

    list_asset = dp.File(data=lis, name="List Asset", is_json=True)

    img_asset = dp.File(file=datadir / "datapane-logo.png")

    plot_asset = dp.Plot(data=alt.Chart(gen_df()).mark_line().encode(x="x",
                                                                     y="y"),
                         caption="Plot Asset")

    df_asset = dp.Table(df=df, caption="Test Dataframe Table")

    pivot_asset = dp.Table(df=df,
                           caption="Test Dataframe PivotTable",
                           can_pivot=True)

    if single_file:
        return dp.Report(dp.Blocks([md_block, plot_asset]))
    else:
        return dp.Report(list_asset, img_asset, df_asset, md_block, plot_asset,
                         pivot_asset)
コード例 #2
0
def gen_report_complex_with_files(datadir: Path,
                                  single_file: bool = False,
                                  local_report: bool = False) -> dp.Report:
    # Asset tests
    lis = [1, 2, 3]
    small_df = gen_df()
    big_df = gen_df(10000)

    # text
    # md_block
    html_block = dp.HTML(html="<h1>Hello World</h1>")
    html_block_1 = dp.HTML(html=h2("Hello World"))
    code_block = dp.Code(code="print('hello')", language="python")
    formula_block = dp.Formula(formula=r"\frac{1}{\sqrt{x^2 + 1}}")
    big_number = dp.BigNumber(heading="Tests written", value=1234)
    big_number_1 = dp.BigNumber(heading="Real Tests written :)",
                                value=11,
                                change=2,
                                is_upward_change=True)
    embed_block = dp.Embed(url="https://www.youtube.com/watch?v=JDe14ulcfLA")

    # assets
    plot_asset = dp.Plot(data=gen_plot(), caption="Plot Asset")
    list_asset = dp.File(data=lis, filename="List Asset", is_json=True)
    img_asset = dp.File(file=datadir / "datapane-logo.png")

    # tables
    table_asset = dp.Table(data=small_df, caption="Test Basic Table")
    # local reports don't support DataTable
    dt_asset = table_asset if local_report else dp.DataTable(
        df=big_df, caption="Test DataTable")

    if single_file:
        return dp.Report(dp.Group(blocks=[md_block, dt_asset]))
    else:
        return dp.Report(
            dp.Page(
                dp.Select(md_block,
                          html_block,
                          html_block_1,
                          code_block,
                          formula_block,
                          embed_block,
                          type=dp.SelectType.TABS),
                dp.Group(big_number, big_number_1, columns=2),
            ),
            dp.Page(
                plot_asset,
                list_asset,
                img_asset,
                table_asset,
                dt_asset,
            ),
        )
コード例 #3
0
def __test_gen_report_id_check():
    """Test case unused atm"""
    # all fresh
    report = dp.Report(md_block, md_block, md_block)
    assert_report(report)  # expected_id_count=5)
    # 2 fresh
    report = dp.Report(md_block, md_block_id, md_block)
    assert_report(report)  # expected_id_count=4)
    # 0 fresh
    report = dp.Report(md_block_id, dp.Text("test", name="test-2"))
    assert_report(report)  # expected_id_count=2)
コード例 #4
0
def test_gen_report_primitives(datadir: Path):
    # check we don't allow arbitary python primitives - must be pickled directly via dp.File
    with pytest.raises(DPError):
        _ = dp.Report([1, 2, 3])

    report = dp.Report(
        "Simple string Markdown #2",  # Markdown
        gen_df(),  # Table
        gen_plot(),  # Plot
        datadir / "datapane-logo.png",  # File
    )
    assert_report(report, 3)
    assert glom(report, ("pages.0.blocks.0.blocks", ["_tag"])) == [
        "Text", "Table", "Plot", "File"
    ]
コード例 #5
0
def test_complex_df_report():
    """Test our dataframe importing with types of DFs user's upload"""
    tz_df = convert_csv_pd("""
        date,datetime,datetime_tz
        2017-01-10,2017-01-21T23:10:24,2020-03-23T00:00:00.000Z
        2017-01-11,2017-01-23T23:01:24,2020-04-23T00:00:00.000Z
    """)

    raw_data = {
        "first_name": ["Jason", "Molly", "Tina", "Jake", "Amy"],
        "last_name": ["Miller", "Jacobson", "Ali", "Milner", "Cooze"],
        "age": [42, 52, 36, 24, 73],
        "preTestScore": [4, 24, 31, 2, 3],
        "postTestScore": [25, 94, 57, 62, 70],
    }
    index_df = pd.DataFrame(raw_data,
                            columns=[
                                "first_name", "last_name", "age",
                                "preTestScore", "postTestScore"
                            ])
    df_desc = index_df.describe()
    df_desc_2 = df_desc.reset_index()

    tz_t = dp.Table(tz_df)
    index_t = dp.Table(index_df)
    df_desc_t = dp.Table(df_desc)
    df_desc_2_t = dp.Table(df_desc_2)

    with deletable(dp.Report(tz_t, index_t, df_desc_t,
                             df_desc_2_t)) as dp_report:
        dp_report.publish(name=gen_name())
コード例 #6
0
 def discrim_html_output_datapane(self, ProcDiscrim, fileName):
     """Création d'un reporting en format HTML pour la méthode PROC DISCRIM
     grâce à la librairie datapane.
     
     Paramètres
     ----------
     ProcDiscrim : objet LinearDiscriminantAnalysis
         objet suite à appel de la fonction fit() de la classe 
         LinearDiscriminantAnalysis
     fileName : string
         nom du fichier de sortie (avec ou sans .html)
     """
     if fileName[-5:] != ".html":
         fileName += ".html"
     
     ProcDiscrim._stats_dataset()
     ProcDiscrim._stats_classes()
     ProcDiscrim._stats_pooled_cov_matrix()
     ProcDiscrim._stats_wilks()
     report = dp.Report(
         dp.Text("# Linear Discriminant Analysis"),
         dp.Text("## General information about the data"),
         dp.Table(ProcDiscrim.infoDataset),
         dp.Table(ProcDiscrim.infoClasses),
         dp.Text("## Informations on the covariance matrix"),
         dp.Table(ProcDiscrim.W),
         dp.Table(ProcDiscrim.infoCovMatrix),
         dp.Text("## Function of lda and its' intercept "
                 "and coefficients"),
         dp.Table(ProcDiscrim.infoFuncClassement),
         dp.Text("## Statistics. Wilks' Lambda"),
         dp.Table(ProcDiscrim.infoWilksStats))
     
     report.save(path=fileName)
コード例 #7
0
def gen_report_complex_no_files() -> dp.Report:
    """Generate a complex layout report with simple elements"""
    select = dp.Select(blocks=[md_block, md_block], type=dp.SelectType.TABS)
    group = dp.Group(md_block, md_block, columns=2)

    return dp.Report(
        dp.Page(
            blocks=[
                dp.Group(md_block, md_block, columns=2),
                dp.Select(blocks=[md_block, group],
                          type=dp.SelectType.DROPDOWN),
            ],
            title="Page Uno",
        ),
        dp.Page(
            blocks=[
                dp.Group(select, select, columns=2),
                dp.Select(blocks=[md_block, md_block, md_block],
                          type=dp.SelectType.TABS),
            ],
            title="Page Duo",
        ),
        dp.Page(
            blocks=[
                dp.Group(group, group, columns=2),
                dp.Select(blocks=[select, select], type=dp.SelectType.TABS),
            ],
            title="Page Tres",
        ),
    )
コード例 #8
0
def test_gen_report_nested_blocks():
    s = "# Test markdown block <hello/> \n Test **content**"
    report = dp.Report(blocks=[
        dp.Group(dp.Text(s, name="test-id-1"),
                 "Simple string Markdown",
                 label="test-group-label"),
        dp.Select(
            blocks=[
                dp.Text(s, name="test-id-2", label="test-block-label"),
                "Simple string Markdown",
            ],
            label="test-select-label",
        ),
    ])

    # No additional wrapper block
    assert len(report.pages[0].blocks) == 2
    assert isinstance(report.pages[0].blocks[0], dp.Group)
    assert isinstance(report.pages[0].blocks[1], dp.Select)
    assert isinstance(report.pages[0].blocks[1].blocks[1], dp.Text)
    assert glom(report, ("pages.0.blocks", ["_attributes.label"])) == [
        "test-group-label", "test-select-label"
    ]
    assert glom(report, "pages.0.blocks.0.blocks.0.name") == "test-id-1"
    assert glom(
        report,
        "pages.0.blocks.1.blocks.0._attributes.label") == "test-block-label"
    assert_report(report, 0)
コード例 #9
0
ファイル: test_reports.py プロジェクト: datapane/datapane
def test_full_report(tmp_path: Path):
    df = gen_df()
    name = gen_name()
    description = gen_description()
    source_url = "https://github.com/datapane/datapane"
    # create a basic report
    m = dp.Text("hello world!!")

    # Asset tests
    lis = [1, 2, 3]
    json_list: str = json.dumps(lis)
    plot = gen_plot()

    # create the DP
    fn = tmp_path / "json_list.json"
    fn.write_text(data=json_list)
    file_asset = dp.File(file=fn)
    json_asset = dp.File(data=json_list, is_json=True)
    plot_asset = dp.Plot(data=plot)
    list_asset = dp.File(data=lis, is_json=True)
    df_asset = dp.DataTable(df=df, caption="Our Dataframe")
    dp_report = dp.Report(m, file_asset, df_asset, json_asset, plot_asset, list_asset)
    dp_report.upload(name=name, description=description, source_url=source_url)

    with deletable(dp_report):
        # are the fields ok
        check_name(dp_report, name)
        assert dp_report.description == description
        assert dp_report.source_url == source_url
        assert len(dp_report.pages[0].blocks[0].blocks) == 6
コード例 #10
0
ファイル: test_reports.py プロジェクト: datapane/datapane
def test_complex_df_report():
    """Test our dataframe importing with types of DFs user's upload"""
    tz_df = pd.DataFrame(
        dict(
            duration_col=[timedelta(seconds=x) for x in range(30)],
            date_col=[date.today() for _ in range(30)],
            datetime_col=[datetime.utcnow() for _ in range(30)],
            datetimez_col=[datetime.now(timezone.utc) for _ in range(30)],
        )
    )

    raw_data = {
        "first_name": ["Jason", "Molly", "Tina", "Jake", "Amy"],
        "last_name": ["Miller", "Jacobson", "Ali", "Milner", "Cooze"],
        "age": [42, 52, 36, 24, 73],
        "preTestScore": [4, 24, 31, 2, 3],
        "postTestScore": [25, 94, 57, 62, 70],
    }
    index_df = pd.DataFrame(raw_data, columns=["first_name", "last_name", "age", "preTestScore", "postTestScore"])
    df_desc = index_df.describe()
    df_desc_2 = df_desc.reset_index()

    tz_t = dp.DataTable(tz_df)
    index_t = dp.DataTable(index_df)
    df_desc_t = dp.DataTable(df_desc)
    df_desc_2_t = dp.DataTable(df_desc_2)

    with deletable(dp.Report(tz_t, index_t, df_desc_t, df_desc_2_t)) as dp_report:
        dp_report.upload(name=gen_name())
コード例 #11
0
def LoadReport(title, X, Y, prediccion, anios):
    """ Función de utilidad para generar el reporte en Datapane. Crea una tabla
    que contiene los valores de las predicciones, así como las métricas con las
    que se evalúan los modelos. También contiene una gráfica de puntos con los 
    valores de la predicción.
    
    Args:
        title (str): titulo del reporte de datapane.
        X (:obj: `numpy.array`): datos reales de prueba.
        Y (:obj: `numpy.array`): datos reales de predicción.
        prediccion (:obj: `numpy.array`): datos predichos.
        anios (int): número de años que se predijeron.
       
    Returns:
        (:obj: `datapane.Report`): reporte de datapane listo para publicar o guardar.
    """
    anios_ = [1998 + i for i in range(len(X))]
    n1 = len(anios_)
    anios_ += [1997 + len(X) + i for i in range(len(Y) + 1)]
    n2 = len(anios_) - n1
    anios_ += [1997 + len(X) + i for i in range(len(Y) + 1)]
    n3 = len(anios_) - n2 - n1

    series = ['Datos de entrenamiento'] * n1
    series += ['Datos de prueba'] * n2
    series += ['Datos predichos'] * n3

    alumnos = list(X)
    alumnos += (list(X) + list(Y))[-(anios + 1):]
    alumnos += (list(X) + list(prediccion))[-(anios + 1):]

    df = pd.DataFrame(data={
        'Serie': series,
        'Año': anios_,
        'Alumnos': alumnos
    })

    columns = ['Año %d' % (i) for i in range(1, anios + 1)]
    columns += ['MAPE', 'MAE', 'RMSE']

    metricas = np.zeros(3)
    # MAPE
    metricas[0] = np.abs((prediccion - Y) / Y).mean()
    # MAE
    metricas[1] = np.abs(prediccion - Y).mean()
    # RMSE
    metricas[2] = np.sqrt(np.square(prediccion - Y).mean())

    metricas = pd.DataFrame(np.array([list(prediccion) + list(metricas)]),
                            columns=columns)

    # Crear grafica
    chart = alt.Chart(df).mark_line().encode(
        x='Año', y='Alumnos', color='Serie').mark_line(
            point=True).interactive().properties(title=title)

    # Crear reporte
    reporte = dp.Report(dp.Table(metricas), dp.Plot(chart))
    return reporte
コード例 #12
0
ファイル: test_api.py プロジェクト: cxz/datapane
def gen_report_with_files(datadir: Path,
                          single_file: bool = False) -> dp.Report:
    # Asset tests
    lis = [1, 2, 3]
    small_df = gen_df()
    big_df = gen_df(10000)

    # text
    md_block = dp.Markdown(
        text="# Test markdown block </hello> \n Test **content**")
    html_block = dp.HTML(html="Hello World</hello>")
    big_number = dp.BigNumber(heading="Tests written", value=1234)
    big_number_1 = dp.BigNumber(heading="Real Tests written :)",
                                value=11,
                                change=2,
                                is_upward_change=True)

    # assets
    plot_asset = dp.Plot(data=alt.Chart(gen_df()).mark_line().encode(x="x",
                                                                     y="y"),
                         caption="Plot Asset")
    list_asset = dp.File(data=lis, name="List Asset", is_json=True)
    img_asset = dp.File(file=datadir / "datapane-logo.png")

    # tables
    table_asset = dp.Table(data=small_df, caption="Test Basic Table")
    dt_asset = dp.DataTable(df=big_df, caption="Test DataTable")
    dt_pivot_asset = dp.DataTable(df=big_df,
                                  caption="Test DataTable with Pivot",
                                  can_pivot=True)

    if single_file:
        return dp.Report(dp.Blocks(blocks=[md_block, plot_asset]))
    else:
        return dp.Report(
            md_block,
            html_block,
            big_number,
            big_number_1,
            plot_asset,
            list_asset,
            img_asset,
            table_asset,
            dt_asset,
            dt_pivot_asset,
        )
コード例 #13
0
ファイル: eefolium.py プロジェクト: pdubeau/geemap
    def publish(
        self,
        name="Folium Map",
        description="",
        source_url="",
        visibility="DEFAULT",
        open=True,
        tags=None,
        **kwargs,
    ):
        """Publish the map to datapane.com

        Args:
            name (str, optional): The document name - can include spaces, caps, symbols, etc., e.g. "Profit & Loss 2020". Defaults to "Folium Map".
            description (str, optional): A high-level description for the document, this is displayed in searches and thumbnails. Defaults to ''.
            source_url (str, optional): A URL pointing to the source code for the document, e.g. a GitHub repo or a Colab notebook. Defaults to ''.
            visibility (str, optional): Visibility of the map. It can be one of the following: PORTFOLIO, PRIVATE, DEFAULT. Defaults to 'DEFAULT'.
            open (bool, optional): Whether to open the map. Defaults to True.
            tags (bool, optional): A list of tags (as strings) used to categorise your document. Defaults to None.
        """
        import webbrowser

        try:
            import datapane as dp
        except Exception:
            webbrowser.open_new_tab(
                "https://docs.datapane.com/tut-getting-started")
            raise ImportError(
                "The datapane Python package is not installed. You need to install and authenticate datapane first."
            )

        try:

            visibility = visibility.upper()

            if visibility not in ["DEFAULT", "PRIVATE", "PORTFOLIO"]:
                raise ValueError(
                    "The visibility argument must be either DEFAULT or PRIVATE or PORTFOLIO."
                )

            if visibility == "PRIVATE":
                visibility = dp.Visibility.PRIVATE
            elif visibility == "PORTFOLIO":
                visibility = dp.Visibility.PORTFOLIO
            else:
                visibility = dp.Visibility.DEFAULT

            dp.Report(dp.Plot(self)).upload(
                name=name,
                description=description,
                source_url=source_url,
                visibility=visibility,
                open=open,
                tags=tags,
            )

        except Exception as e:
            raise Exception(e)
コード例 #14
0
ファイル: test_api.py プロジェクト: tig/datapane
def test_gen_failing_reports():
    # local reports with unsupported elements
    with pytest.raises(DPError):
        r = dp.Report(dp.DataTable(gen_df()))
        r._gen_report(embedded=True, title="TITLE", description="DESCRIPTION")

    # nested pages
    with pytest.raises((DocumentInvalid, DPError)):
        r = dp.Report(dp.Page(dp.Page(md_block)))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")
    with pytest.raises((DocumentInvalid, DPError)):
        r = dp.Report(dp.Group(dp.Page(md_block)))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")

    # group with 0 object
    with pytest.raises((DocumentInvalid, DPError)):
        r = dp.Report(dp.Page(dp.Group(blocks=[])))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")

    # select with 1 object
    with pytest.raises((DocumentInvalid, DPError)):
        r = dp.Report(dp.Page(dp.Select(blocks=[md_block])))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")

    # empty text block
    with pytest.raises((AssertionError, DocumentInvalid, DPError)):
        r = dp.Report(dp.Text(" "))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")

    # empty df
    with pytest.raises((AssertionError, DocumentInvalid, DPError)):
        r = dp.Report(dp.DataTable(pd.DataFrame()))
        r._gen_report(embedded=False, title="TITLE", description="DESCRIPTION")
コード例 #15
0
ファイル: test_api.py プロジェクト: cxz/datapane
def gen_report_nested_mixed() -> dp.Report:
    return dp.Report(
        dp.Blocks(
            dp.Markdown(
                text="# Test markdown block <hello/> \n Test **content**",
                id="test-id-1"),
            "Simple string Markdown",
        ),
        "Simple string Markdown #2",
    )
コード例 #16
0
ファイル: datapane.py プロジェクト: evalsocket/flytepane
def publish_report(df: pandas.DataFrame):
    dp_token: str = db["DP_TOKEN"]
    dp.login(token=dp_token)

    plot = alt.Chart(df).mark_area(opacity=0.4, stroke='black').encode(
        x='date:T',
        y=alt.Y('new_cases_smoothed_per_million:Q', stack=None),
        color=alt.Color('continent:N', scale=alt.Scale(scheme='set1')),
        tooltip='continent:N').interactive().properties(width='container')

    dp.Report(dp.Plot(plot), dp.DataTable(df)).save(path='report.html',open=True)
コード例 #17
0
ファイル: test_templates.py プロジェクト: datapane/datapane
def test_add_footer():
    text = "FOOTER"

    r = dp.Report(blocks=[dp.Page(md_block, md_block) for _ in range(3)])

    r1 = dp.templates.add_footer(r, footer=text, all_pages=True)
    assert_report(r1, 0, 18)
    assert glom(r1, ("pages", ["blocks.0.blocks.-1.content"])) == [text, text, text]

    r1 = dp.templates.add_footer(r, footer=text, all_pages=False)
    assert_report(r1, 0, 14)
    assert glom(r1, ("pages", ["blocks.0.blocks.-1.content"])) == [text, md_block.content, md_block.content]
コード例 #18
0
def plot_planning(planning, need, timeline):
    # Plot graph - Requirement
    source = need.copy()
    source = source.rename(columns={0: "Hours"})
    source["Date"] = source.index

    bars_need = (alt.Chart(source).mark_bar().encode(
        y="Hours:Q",
        column=alt.Column("Date:N"),
        tooltip=["Date", "Hours"],
    ).interactive().properties(
        width=550 / len(timeline) - 22,
        height=75,
        title='Requirement',
    ))

    # Plot graph - Optimized planning
    source = planning.filter(like="Total hours", axis=0).copy()
    source["Date"] = list(source.index.values)
    source = source.rename(columns={"Solution": "Hours"}).reset_index()
    source[["Date", "Line"]] = source["Date"].str.split(",", expand=True)
    source["Date"] = source["Date"].str.split("[").str[1]
    source["Line"] = source["Line"].str.split("]").str[0]
    source["Min capacity"] = 7
    source["Max capacity"] = 12
    source = source.round({"Hours": 1})
    source["Load%"] = pd.Series(
        ["{0:.0f}%".format(val / 8 * 100) for val in source["Hours"]],
        index=source.index,
    )

    bars = (alt.Chart(source).mark_bar().encode(
        x="Line:N",
        y="Hours:Q",
        column=alt.Column("Date:N"),
        color="Line:N",
        tooltip=["Date", "Line", "Hours", "Load%"],
    ).interactive().properties(
        width=550 / len(timeline) - 22,
        height=150,
        title="Optimized Production Schedule",
    ))

    chart = alt.vconcat(bars, bars_need)
    chart.save("planning_time_model2.html")

    dp.Report(dp.Plot(
        chart, caption="Production schedule model 2 - Time")).publish(
            name="Optimized production schedule model 2 - Time",
            description="Optimized production schedule model 2 - Time",
            open=True,
            visibily="PUBLIC",
        )
コード例 #19
0
ファイル: eefolium.py プロジェクト: zitroeseli/geemap
    def publish(
        self,
        name=None,
        headline="Untitled",
        visibility="PUBLIC",
        overwrite=True,
        open=True,
    ):
        """Publish the map to datapane.com

        Args:
            name (str, optional): The URL of the map. Defaults to None.
            headline (str, optional): Title of the map. Defaults to 'Untitled'.
            visibility (str, optional): Visibility of the map. It can be one of the following: PUBLIC, PRIVATE, ORG. Defaults to 'PUBLIC'.
            overwrite (bool, optional): Whether to overwrite the existing map with the same name. Defaults to True.
            open (bool, optional): Whether to open the map. Defaults to True.
        """
        import webbrowser

        try:
            import datapane as dp
        except Exception:
            webbrowser.open_new_tab(
                "https://docs.datapane.com/tutorials/tut-getting-started")
            raise ImportError(
                "The datapane Python package is not installed. You need to install and authenticate datapane first."
            )

        # import datapane as dp

        # import logging
        # logging.getLogger('googleapiclient.discovery_cache').setLevel(logging.ERROR)

        try:

            if name is None:
                name = "folium_" + random_string(6)

            visibility = visibility.upper()
            if visibility not in ["PUBLIC", "PRIVATE", "ORG"]:
                visibility = "PRIVATE"

            if overwrite:
                delete_dp_report(name)

            report = dp.Report(dp.Plot(self))
            report.publish(name=name,
                           headline=headline,
                           visibility=visibility,
                           open=open)

        except Exception as e:
            print(e)
コード例 #20
0
def test_gen_report_nested_mixed():
    report = dp.Report(
        dp.Group(
            md_block_id,
            str_md_block,
        ),
        "Simple string Markdown #2",
    )

    assert_report(report, 0)
    assert len(glom(report, "pages.0.blocks")) == 1
    assert isinstance(glom(report, "pages.0.blocks.0"), dp.Group)
    assert isinstance(report.pages[0].blocks[0].blocks[0], dp.Group)
    assert isinstance(report.pages[0].blocks[0].blocks[1], dp.Text)
    assert report.pages[0].blocks[0].blocks[0].blocks[0].name == "test-id-1"
コード例 #21
0
    def publish(
        self,
        name="Folium Map",
        description="",
        source_url="",
        tags=None,
        source_file=None,
        open=True,
        formatting=None,
        **kwargs,
    ):
        """Publish the map to datapane.com

        Args:
            name (str, optional): The document name - can include spaces, caps, symbols, etc., e.g. "Profit & Loss 2020". Defaults to "Folium Map".
            description (str, optional): A high-level description for the document, this is displayed in searches and thumbnails. Defaults to ''.
            source_url (str, optional): A URL pointing to the source code for the document, e.g. a GitHub repo or a Colab notebook. Defaults to ''.
            tags (bool, optional): A list of tags (as strings) used to categorise your document. Defaults to None.
            source_file (str, optional): Path of jupyter notebook file to upload. Defaults to None.
            open (bool, optional): Whether to open the map. Defaults to True.
            formatting (ReportFormatting, optional): Set the basic styling for your report.
        """
        import webbrowser

        try:
            import datapane as dp
        except Exception:
            webbrowser.open_new_tab("https://docs.datapane.com/tut-getting-started")
            raise ImportError(
                "The datapane Python package is not installed. You need to install and authenticate datapane first."
            )

        try:

            dp.Report(dp.Plot(self)).upload(
                name=name,
                description=description,
                source_url=source_url,
                tags=tags,
                source_file=source_file,
                open=open,
                formatting=formatting,
            )

        except Exception as e:
            raise Exception(e)
コード例 #22
0
def run(db_url):
    engine = Engine(db_url)
    graph_posts_per_day = process_posts_per_day(engine)
    post_per_day_caption = (
        f"Number of posts updated per day (updated {get_current_time_in_vietname()})"
    )
    df_posts_per_domain = process_posts_per_domain(engine)
    df_domain_sim, graph_domain_sim_score = process_sim_score_table(engine)
    report = dp.Report(
        dp.Plot(graph_posts_per_day, caption=post_per_day_caption),
        dp.DataTable(df_posts_per_domain,
                     caption="Number of posts per domain"),
        dp.DataTable(df_domain_sim, caption="Simplified similar_docs table"),
        dp.Plot(graph_domain_sim_score,
                caption="Similarity score histogram (>= 0.5)"),
    )
    report.publish(name="TopDup monitoring table", open=False)
    print("View report at "
          "https://datapane.com/u/tiepvupsu/reports/topdup-monitoring-table/")
コード例 #23
0
r = dp.Report(
    dp.Page(
        label='Introduction',
        blocks=[
            dp.HTML(html),
            "The data has been compiled over 3 semesters, for the introductory computer science class CSE 1223.",
            dp.Group(dp.BigNumber(heading="Number of Students",
                                  value=num_students),
                     dp.BigNumber(heading="Class Average",
                                  value=str(class_average) + "%",
                                  change="2%",
                                  is_upward_change=True),
                     columns=2),
            dp.BigNumber(heading="Pass Rate", value=str(pass_rate) + "%"),
        ]),
    dp.Page(label='Deliverables',
            blocks=[
                f'### Labs',
                dp.Plot(lab_bar), f'### Homeworks',
                dp.Plot(hw_bar), f'### Projects',
                dp.Plot(project_bar)
            ]),
    dp.Page(label='Exam Grades',
            blocks=[f'### Kernel Density Plot ',
                    dp.Plot(exams_kdp)]),
    dp.Page(label='Final Grades',
            blocks=[
                f'### Comparing Final Grade Data ',
                dp.Plot(fg_hist),
                dp.Plot(letter_pie)
            ]),
    dp.Page(
        dp.Select(blocks=[
            dp.Plot(sex_bar, label='Sex-Bar Chart'),
            dp.Plot(urm_bar, label='URM-Bar Chart'),
            dp.Plot(race_bar, label='Race-Bar Chart'),
            dp.Plot(sex_kdp, label='Sex-KDP')
        ],
                  type=dp.SelectType.DROPDOWN),
        label='Demographics',
        #blocks=[f'### Comparing Final Grade Data among Various Demographics']
    ))
コード例 #24
0
ファイル: test_api.py プロジェクト: cxz/datapane
def gen_report_simple() -> dp.Report:
    return dp.Report(blocks=[
        dp.Markdown(text="# Test markdown block <hello/> \n Test **content**",
                    id="test-id-1"),
        "Simple string Markdown",
    ])
コード例 #25
0
import os
import pandas as pd
import datapane as dp

# basic report creation, with params
df = pd.DataFrame.from_dict({"x": [4, 3, 2, 1], "y": [10.5, 20.5, 30.5, 40.5]})
blocks = [dp.Text(f"Dummy Markdown block - {dp.Params['p1']}"), dp.DataTable(df), dp.Text(f"Text block with env var: {os.environ['ENV_VAR']}")]

# test running as main or by datapane runner
if dp.ON_DATAPANE:
    print("on datapane")
if __name__ == "__datapane__":  # same as dp.by_datapane
    print("by datapane")
    report = dp.Report(blocks=blocks)
    report.upload(name="dp_report", description="Description")
コード例 #26
0
ファイル: dp_complex_report.py プロジェクト: cxz/datapane
yevents1 = EventCollection(ydata1, color='tab:blue', linelength=0.05,
                           orientation='vertical')
yevents2 = EventCollection(ydata2, color='tab:orange', linelength=0.05,
                           orientation='vertical')
ax.add_collection(xevents1)
ax.add_collection(xevents2)
ax.add_collection(yevents1)
ax.add_collection(yevents2)
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_title('line plot with data points')
mpl_asset = dp.Plot(mpl_fig)

# Report
report = dp.Report(
    list_asset,
    df_asset,
    md_block,
    vega_asset,
    pv_asset,
    img_asset,
    file_asset,
    bokeh_asset,
    plotly_asset,
    folium_asset,
    mpl_asset
)

report.save(path="local_xml_report.html")
report.publish(name="xml_report")
コード例 #27
0
"""{{ name }} report"""
import altair as alt
import pandas as pd
import datapane as dp

# get the data
dataset = pd.read_csv(
    "https://covid.ourworldindata.org/data/owid-covid-data.csv")
df = dataset.groupby(
    ["continent",
     "date"])["new_cases_smoothed_per_million"].mean().reset_index()

# build an altair plot
plot = alt.Chart(df).mark_area(opacity=0.4, stroke='black').encode(
    x='date:T',
    y=alt.Y('new_cases_smoothed_per_million:Q', stack=None),
    color=alt.Color('continent:N', scale=alt.Scale(scheme='set1')),
    tooltip='continent:N').interactive().properties(width='container')

# embed data and plot into a Datapane report and publish
report = dp.Report("## Covid data per continent", dp.Plot(plot), dp.Table(df))
report.publish(
    name="Covid Demo {{ name }}",
    description=
    "Plot of Covid infections per continent, using data from ourworldindata",
    open=True,
)
コード例 #28
0
ax.plot(xdata2, ydata2, color='tab:orange')
xevents1 = EventCollection(xdata1, color='tab:blue', linelength=0.05)
xevents2 = EventCollection(xdata2, color='tab:orange', linelength=0.05)
yevents1 = EventCollection(ydata1,
                           color='tab:blue',
                           linelength=0.05,
                           orientation='vertical')
yevents2 = EventCollection(ydata2,
                           color='tab:orange',
                           linelength=0.05,
                           orientation='vertical')
ax.add_collection(xevents1)
ax.add_collection(xevents2)
ax.add_collection(yevents1)
ax.add_collection(yevents2)
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_title('line plot with data points')
mpl_asset = dp.Plot(mpl_fig)

# Report
blocks = [
    list_asset, df_table_asset, md_block, vega_asset, img_asset, file_asset,
    bokeh_asset, plotly_asset, folium_asset, mpl_asset
]

dp.Report(blocks=blocks).save(path="local_xml_report.html")
# add datatable
blocks.append(df_datatable_asset)
dp.Report(blocks=blocks).upload(name="xml_report")
コード例 #29
0
                         name='PDF',
                         line=dict(color='#ffc93c', width=2.5)),
              row=1,
              col=1)

fig.add_trace(go.Scatter(x=values,
                         y=cdfproba,
                         name='CDF',
                         line=dict(color='#ffc93c', width=2.5)),
              row=1,
              col=2)
fig.update_layout(plot_bgcolor='#0f4c75')
fig.update_xaxes(showgrid=False)
fig.update_yaxes(showgrid=False)

report = dp.Report(dp.Plot(fig))  #Create a report
report.publish(name='my_plot', open=True,
               visibility='PUBLIC')  #Publish the report

# In[2]:

import numpy as np
from plotly.subplots import make_subplots
import plotly.graph_objects as go
from scipy.stats import norm

import warnings
warnings.filterwarnings('ignore')
warnings.simplefilter('ignore')

values = np.linspace(-3, 3, num=101)
コード例 #30
0
def gen_report_simple() -> dp.Report:
    return dp.Report(blocks=[
        md_block_id,
        str_md_block,
    ])