Category: Python

  • quadrilateral mesh

    copilot에서 4각형 메시를 만들어 달라고 해보았다.

    # 사각형 메쉬 예제
    
    # 정점 정의 (v x y z)
    v 0.0 0.0 0.0
    v 1.0 0.0 0.0
    v 1.0 1.0 0.0
    v 0.0 1.0 0.0
    
    # 면 정의 (f vertex1 vertex2 vertex3 vertex4)
    f 1 2 3 4

    이걸 보면 다음과 같다.

    각각의 점(v)에 대한 정의를 이용해서 면(f)을 만들어 낸다. 문제는 점의 좌표를 다 파악하고 있어야 한다.

    면에서 4개의 점을 입력하면 사각형이, 6개의 점을 입력하면 육각형을 만들 수 있다.

    copilot에서 인덱스 없이 만들 수 있는 방법을 물어 보았다. 방법을 알려주는데 그 방법은 제대로 동작하지 않는 것 같다. 인덱스를 활영해서 하는 것이 좋겠다.첫 번째가 0이 아닌 1이다. point cloud에서 obj 등과 같이 변환해 주는 것들이 있기는 한데.. 무료가 아닌 것 같다. 그러면 천천해 만들어 봐야한다. 표면이 단순하다는게 다행이긴 하다.

  • Datamatrix

    회사에서 접수 때 사용하는 바코드의 정보는 2가지이다. 하나는 환자 번호가 있는 것, 다른 하나는 검체 번호가 있는 것이다.

    병리과에서 문제라면 생검 조직은 둥근 통에 담기는데 바코드를 세워 붙여야 인식이 잘 된다는 것이다. 일부 바코드는 Datamatrix 형식으로 운영되니 여기에 맞춰서 작업을 해보기로 한다. 우선 직접 datamatrix를 만들 수 있어야 하니 이것부터 시도했다.

    treepoem 패키지를 이용한다.

    여기에 보면 datamatrix를 만들 수 있다는 내용은 없는데 만들 수 있다. 다만, 기존에 사용하던 것이랑 표현이 조금 달라서 더 알아봐야 한다.

    import treepoem
    
    image = treepoem.generate_barcode(
        barcode_type="datamatrix",  # One of the BWIPP supported codes.
        data="12345678",
    )
    image.convert("1").save("qr.png")
  • Telegram on Python

    파이썬에서 Telegram 메세지 보내는 방법은 두 가지가 있는 것 같다. 첫 번째는 api.telegram.org를 이용하는 것이다. 이 경우 다음과 같이 한다.

    import requests
    
    def Send_Message_2(text):
        url = f"https://api.telegram.org/bot{my_token}/sendMessage"
        params = {
            "chat_id" : my_channel_id,
            "text" : text
        }
        requests.get(url, params=params)
    
    Send_Message_2("test2")

    telegram 에서 제공하는 python 모듈을 이용할 경우에는 다음과 같다. asyncio 라는 것을 이용해야 한다고 한다. 그리고 jupyter lab 같은 환경에서는 오류가 난다. 직접 실행하는 환경에서는 정상 동작한다.

    import telegram
    import asyncio
    
    bot = telegram.Bot(token=my_token)
    
    async def Send_Message_1(text):
        await bot.sendMessage(chat_id=my_channel_id, text=text)
    
    asyncio.run(Send_Message_1("test1"))
  • PIP update all packages

    R에서는 비교적 쉽게 모든 패키지를 업데이트 할 수 있다. 나는 파이썬에서 PIP를 이용해서 패키지를 관리한다. PIP 자체로 모든 패키지를 업데이트 하는 방법은 아직 없는 것 같다. 나는 데비안의 도커의 컨테이너 환경에서 파이썬을 이용한다. 다음의 방법이 내가 적용하기 쉬운 방법이었다.

    적당한 디렉토리에서 다음과 같은 명령어로 현재 설치된 패키지를 확인한다.

    pip freeze > requirements.txt

    sed를 이용해서 ‘==’를 ‘>=’로 변경한다.

    sed -i 's/==/>=/' requirements.txt

    PyTorch 패키지는 이 방법으로 업그레이드 할 수 없다. 그러므로 torch 와 nvidia 이름이 포함된 패키지는 제외하도록 파일에서 삭제한다.

    sed -i '/torch/d' requirements.txt
    sed -i '/nvidia/d' requirements.txt

    다음의 명령어를 실행하면 패키지들 중에서 버젼이 더 높은 것들이 있는 것이 있으면, 해당 패키지가 업데이트 된다.

    pip install -r requirements.txt --upgrade --break-system-packages